Comment : utiliser un curseur de défilement pour activer le déplacement
Mise à jour : novembre 2007
Cet exemple montre comment utiliser un contrôle Thumb pour redimensionner un contrôle Canvas.
Exemple
Le contrôle Thumb fournit une fonctionnalité de glissement qui peut être utilisée pour déplacer ou redimensionner des contrôles en surveillant les événements DragStarted, DragDelta et DragCompleted du Thumb.
L'opération de glissement commence lorsque l'utilisateur appuie sur le bouton gauche de la souris au moment où le pointeur de la souris passe sur le contrôle Thumb. L'opération de glissement continue jusqu'à ce que l'utilisateur relâche le bouton gauche de la souris. Pendant l'opération de glissement, DragDelta peut se produire plusieurs fois. Chaque fois qu'il se produit, la classe DragDeltaEventArgs apporte la modification de position qui correspond à la modification de la position de la souris. L'opération de glissement est terminée lorsque l'utilisateur relâche le bouton gauche de la souris. L'opération de glissement ne fournit que de nouvelles coordonnées ; elle ne repositionne pas automatiquement le Thumb.
L'exemple suivant montre un contrôle Thumb, élément enfant d'un contrôle Canvas. Le gestionnaire d'événements de son événement DragDelta fournit la logique pour déplacer le Thumb et redimensionner le Canvas. Les gestionnaires d'événements des événements DragStarted et DragCompleted modifient la couleur du Thumb pendant une opération de glissement. L'exemple suivant définit le Thumb.
<Thumb Name="myThumb" Canvas.Left="80" Canvas.Top="80" Background="Blue"
Width="20" Height="20" DragDelta="onDragDelta"
DragStarted="onDragStarted" DragCompleted="onDragCompleted"
/>
L'exemple suivant montre le gestionnaire d'événements DragDelta qui déplace le Thumb et redimensionne le Canvas, suite au déplacement de la souris.
void onDragDelta(object sender, DragDeltaEventArgs e)
{
//Move the Thumb to the mouse position during the drag operation
double yadjust = myCanvasStretch.Height + e.VerticalChange;
double xadjust = myCanvasStretch.Width + e.HorizontalChange;
if ((xadjust >= 0) && (yadjust >= 0))
{
myCanvasStretch.Width = xadjust;
myCanvasStretch.Height = yadjust;
Canvas.SetLeft(myThumb, Canvas.GetLeft(myThumb) +
e.HorizontalChange);
Canvas.SetTop(myThumb, Canvas.GetTop(myThumb) +
e.VerticalChange);
changes.Text = "Size: " +
myCanvasStretch.Width.ToString() +
", " +
myCanvasStretch.Height.ToString();
}
}
L'exemple suivant montre le gestionnaire d'événements DragStarted.
Private Sub onDragStarted(ByVal sender As Object, ByVal e As DragStartedEventArgs)
myThumb.Background = Brushes.Orange
End Sub
void onDragStarted(object sender, DragStartedEventArgs e)
{
myThumb.Background = Brushes.Orange;
}
L'exemple suivant montre le gestionnaire d'événements DragCompleted.
Private Sub onDragCompleted(ByVal sender As Object, _
ByVal e As DragCompletedEventArgs)
myThumb.Background = Brushes.Blue
End Sub
void onDragCompleted(object sender, DragCompletedEventArgs e)
{
myThumb.Background = Brushes.Blue;
}
Pour l'exemple complet, consultez Fonctionnalité Glisser un curseur de défilement, exemple.