2010-12-15 75 views
5

Je me demande si cela fait une différence sur quel contrôle j'appelle la méthode DoDragDrop dans une application Windows Forms.Le contrôle sur lequel vous appelez la méthode DoDragDrop est-il important?

J'ai un formulaire avec deux contrôles PictureBox. L'un peut être déplacé et l'autre a sa propriété AllowsDrop définie sur true.

Le gestionnaire d'événements MouseDown pour le draggable PictureBox est la suivante:

private void dragPictureBox_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (sender is PictureBox) 
     { 
      var pictureBox = (PictureBox) sender; 
      var effect = pictureBox.DoDragDrop(
       pictureBox.Image, DragDropEffects.All); 
      MessageBox.Show("Drag ended in a " + effect); 
     } 
    } 

Mais au lieu d'appeler DoDragDrop sur le picturebox, je semble que je peux utiliser un contrôle, par exemple le formulaire lui-même

var effect = this.DoDragDrop(pictureBox.Image, DragDropEffects.All); 

ou même

var effect = label1.DoDragDrop(pictureBox.Image, DragDropEffects.All); 

Est-il un Différé nce sur quel contrôle j'appelle la méthode DoDragDrop? Et si oui, quelle est la différence?

Répondre

3

Ce n'est pas très bien documenté, mais je crois que cela affecte l'événement QueryContinueDrag déclenché.

Tous les exemples ont tendance à utiliser la source des données de traînée, donc je m'en tiendrai à l'utiliser.

+0

Vous avez absolument raison. La même chose vaut pour l'événement GiveFeedback. Il est intéressant de noter que les deux événements se produisent pendant l'opération de glissement, même si la documentation indique que cela se produit uniquement lorsqu'il y a un changement dans l'état du clavier ou de la souris. – comecme