Comment : faire défiler un formulaire d'étiquettes
Mise à jour : novembre 2007
Dans la mesure où un contrôle Label ne reçoit pas le focus et ne prend pas en charge les opérations de tabulation, une application Smartphone constituée uniquement de contrôles Label n'autorise pas l'utilisateur à naviguer jusqu'aux étiquettes situées au-delà de la zone client visible du formulaire. L'utilisateur d'une application Pocket PC peut appuyer sur les barres de défilement pour naviguer, mais cette fonction n'est pas disponible sur Smartphone.
Vous pouvez implémenter la navigation en fournissant un code dans le gestionnaire d'événements pour l'événement KeyDown qui règle la propriété AutoScrollPosition.
Pour faire défiler un formulaire de contrôles Label
Ajoutez plusieurs contrôles Label au formulaire afin que certains se situent au-dessous de la zone client visible. Utilisez les touches de direction dans le concepteur Microsoft Visual Studio 2005 ou écrivez le code d'initialisation pour les positionner.
Dans le constructeur du formulaire, affectez aux propriétés KeyPreview et AutoScroll la valeur true. Les utilisateurs de C# doivent joindre un délégué pour le gestionnaire d'événements KeyDown.
Me.KeyPreview = True Me.AutoScroll = True
this.KeyPreview = true; this.KeyDown += new KeyEventHandler(Form1_KeyDown); this.AutoScroll = true;
Définissez la propriété AutoScrollPosition pour un déplacement vertical en fonction d'un nombre défini de pixels pour la coordonnée du point y. L'exemple de code suivant utilise 16. Notez que le code est complexe, car AutoScrollPosition est décalé en fonction de valeurs négatives, mais les valeurs de points fournies doivent être positives.
Private Sub Form1_KeyDown(ByVal Sender As System.Object, _ ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown If e.KeyCode = System.Windows.Forms.Keys.Up Then Me.AutoScrollPosition = New Point(0, -Me.AutoScrollPosition.Y - 16) End If If e.KeyCode = System.Windows.Forms.Keys.Down Then Me.AutoScrollPosition = New Point(0, -Me.AutoScrollPosition.Y + 16) End If End Sub
private void Form1_KeyDown(object sender, KeyEventArgs e) { if ((e.KeyCode == System.Windows.Forms.Keys.Up)) { this.AutoScrollPosition = new Point(0, -this.AutoScrollPosition.Y - 16); } if ((e.KeyCode == System.Windows.Forms.Keys.Down)) { this.AutoScrollPosition = new Point(0, -this.AutoScrollPosition.Y + 16); }
Compilation du code
Cet exemple nécessite des références aux espaces de noms suivants :
Voir aussi
Concepts
.Rubriques Comment relatives au .NET Compact Framework