Todas las opciones de arrastrar y colocar empiezan por arrastrar. La función de habilitar la posibilidad de recopilar los datos cuando se inicia la operación de arrastrar se implementa en el método DoDragDrop.
En el ejemplo siguiente, se usa el evento MouseDown para iniciar la operación de arrastrar, ya que es más intuitivo (la mayor parte de acciones de arrastrar y colocar se inician cuando se presiona el botón del mouse). No obstante, recuerde que puede utilizarse cualquier evento para iniciar un procedimiento de arrastrar y colocar.
Nota |
|---|
| Algunos controles disponen de eventos de arrastrar personalizados. Los controles ListView y TreeView, por ejemplo, tienen un evento ItemDrag. |
Para iniciar una operación de arrastre
-
En el evento MouseDown del control en el que se va a iniciar la operación, utilice el método DoDragDrop para establecer los datos que se arrastrarán, y el efecto que tendrá dicha operación. Para obtener más información, vea Data y AllowedEffect.
En el ejemplo siguiente se muestra cómo iniciar una operación de arrastre: Si el control donde se va a iniciar la operación es un control Button, los datos que se arrastran corresponden a la cadena que representa la propiedad Text del control Button, y los efectos permitidos son copiar o mover.
Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
Button1.DoDragDrop(Button1.Text, DragDropEffects.Copy Or DragDropEffects.Move)
End Sub
private void button1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
button1.DoDragDrop(button1.Text, DragDropEffects.Copy |
DragDropEffects.Move);
}
private void button1_MouseDown(Object sender,
System.Windows.Forms.MouseEventArgs e)
{
button1.DoDragDrop(button1.get_Text(), DragDropEffects.Copy |
DragDropEffects.Move);
}
Nota |
|---|
| Se puede usar cualquier dato como parámetro en el método DoDragDrop; en el ejemplo anterior, se usó la propiedad Text del control Button (en lugar de incluir un valor incluido en el código o recuperar datos desde un conjunto de datos) porque la propiedad estaba relacionada con la ubicación desde la que se realizó la operación de arrastrar (el control Button). No lo olvide cuando incorpore operaciones de arrastrar y colocar a aplicaciones para Windows. |
Mientras esté vigente una operación de arrastrar, se puede controlar el evento QueryContinueDrag, que "pide permiso" al sistema para continuar la operación de arrastrar. Cuando se realice este método, también conviene recordar llamar a métodos que tengan un efecto sobre la operación de arrastrar, como expandir un TreeNode en un control TreeView cuando se cursor se mueve sobre él.