2010-12-15 3 views
5

Ich frage mich, ob es einen Unterschied macht, auf welche Steuerelement ich die DoDragDrop-Methode in einer Windows Forms-Anwendung aufrufen.Ist es wichtig, auf welchem ​​Steuerelement Sie die DoDragDrop-Methode aufrufen?

Ich habe ein Formular mit zwei PictureBox-Steuerelementen. Einer kann gezogen werden und der andere hat seine AllowsDrop-Eigenschaft auf true gesetzt.

MouseDown- Ereignishandler für das ziehbar PictureBox ist wie folgt:

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); 
     } 
    } 

Aber anstatt der Aufruf DoDragDrop auf der PictureBox, ich scheint, wie ich keine Kontrolle verwenden können, zum Beispiel die Form selbst

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

oder sogar

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

Macht es differe machen nce auf welcher Kontrolle ich die DoDragDrop Methode aufrufen? Und wenn ja, was ist der Unterschied?

Antwort

3

Es ist nicht sehr gut dokumentiert, aber ich glaube, es Auswirkungen, welche Kontrolle würde das QueryContinueDrag Ereignis ausgelöst haben.

Alle Beispiele neigen dazu, die Quelle der Ziehdaten zu verwenden, also bleibe ich dabei.

+0

Sie haben absolut Recht. Das gleiche gilt für das GiveFeedback-Ereignis. Interessanterweise treten beide Ereignisse während der Ziehoperation auf, obwohl die Dokumentation angibt, dass sie nur auftritt, wenn sich der Tastatur- oder Maustastenstatus ändert. – comecme

Verwandte Themen