2010-12-15 5 views
5

Me pregunto si hace alguna diferencia en qué control llamo el método DoDragDrop en una aplicación de Windows Forms.¿Importa a qué control llama el método DoDragDrop?

Tengo un formulario con dos controles PictureBox. Uno puede arrastrarse y el otro tiene su propiedad AllowsDrop establecida en verdadero.

El controlador de eventos MouseDown para el cuadro de imagen que pueden arrastrarse, es el siguiente:

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

Pero en lugar de llamar a DoDragDrop en el cuadro de imagen, me parece que puedo usar ningún tipo de control, por ejemplo el propio formulario

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

o incluso

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

¿Sería otra differe ¿En qué control llamo al método DoDragDrop? Y si es así, ¿cuál es la diferencia?

Respuesta

3

No está muy bien documentado, pero creo que afecta qué control tendría el evento QueryContinueDrag levantado en él.

Todos los ejemplos tienden a usar la fuente de los datos de arrastre, por lo que me quedaría con el uso de eso.

+0

Tienes toda la razón. Lo mismo vale para el evento GiveFeedback. Curiosamente, ambos eventos continúan ocurriendo durante la operación de arrastre, aunque la documentación indica que solo ocurre cuando hay un cambio en el estado del botón del teclado o del mouse. – comecme

Cuestiones relacionadas