Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Windows Forms incluye un conjunto de métodos, eventos y clases que implementan el comportamiento de arrastrar y colocar. En este artículo se proporciona información general sobre la compatibilidad con arrastrar y colocar en Windows Forms.
Eventos de arrastrar y colocar
Hay dos categorías de eventos en una operación de arrastrar y colocar: eventos que se producen en el destino actual de la operación de arrastrar y colocar, y eventos que se producen en el origen de la operación de arrastrar y colocar. Para realizar operaciones de arrastrar y colocar, debe gestionar estos eventos. Al trabajar con la información disponible en los argumentos de evento de estos eventos, puede facilitar fácilmente las operaciones de arrastrar y colocar.
Eventos en el destino de colocación actual
En la tabla siguiente se muestran los eventos que se producen en el destino actual de una operación de arrastrar y colocar.
| Evento de ratón | Descripción |
|---|---|
| DragEnter | Este evento se produce cuando se arrastra un objeto a los límites del control. El controlador de este evento recibe un argumento de tipo DragEventArgs. |
| DragOver | Este evento se produce cuando se arrastra un objeto mientras el puntero del mouse está dentro de los límites del control. El controlador de este evento recibe un argumento de tipo DragEventArgs. |
| DragDrop | Este evento se produce cuando se completa una operación de arrastrar y colocar. El controlador de este evento recibe un argumento de tipo DragEventArgs. |
| DragLeave | Este evento se produce cuando un objeto se arrastra fuera de los límites del control. El controlador de este evento recibe un argumento de tipo EventArgs. |
La DragEventArgs clase proporciona la ubicación del puntero del mouse, el estado actual de los botones del mouse y las teclas modificadoras del teclado, los datos que se arrastran y DragDropEffects los valores que especifican las operaciones permitidas por el origen del evento de arrastre y el efecto de colocación de destino para la operación.
Eventos en el origen de eliminación
En la tabla siguiente se muestran los eventos que se producen en el origen de la operación de arrastrar y colocar.
| Evento de ratón | Descripción |
|---|---|
| GiveFeedback | Este evento se produce durante una operación de arrastre. Proporciona una oportunidad para proporcionar una indicación visual al usuario de que se está produciendo la operación de arrastrar y colocar, como cambiar el puntero del mouse. El controlador de este evento recibe un argumento de tipo GiveFeedbackEventArgs. |
| QueryContinueDrag | Este evento se genera durante una operación de arrastrar y colocar y permite que el origen de arrastre determine si se debe cancelar la operación de arrastrar y colocar. El controlador de este evento recibe un argumento de tipo QueryContinueDragEventArgs. |
La QueryContinueDragEventArgs clase proporciona el estado actual de los botones del mouse y las teclas modificadoras del teclado, un valor que especifica si se ha presionado la tecla ESC y un DragAction valor que se puede establecer para especificar si la operación de arrastrar y colocar debe continuar.
Realizar arrastrar y colocar
Las operaciones de arrastrar y colocar siempre implican dos componentes, el origen de arrastre y el destino de colocación. Para iniciar una operación de arrastrar y colocar, designe un control como origen y controle el MouseDown evento. En el controlador de eventos, llame al método DoDragDrop proporcionando los datos asociados con la operación de arrastre y un valor DragDropEffects.
Establezca la propiedad del control de destino AllowDrop en true para permitir que ese control acepte una operación de arrastrar y soltar. El objetivo maneja dos eventos, primero un evento que responde al arrastre sobre el control, como DragOver. Y un segundo evento que es la propia acción de soltar, DragDrop.
En el ejemplo siguiente se muestra una operación de arrastrar y soltar de un Label control a un TextBox. Cuando se completa la operación, TextBox responde asignando el texto de la etiqueta a sí mismo.
// Initiate the drag
private void label1_MouseDown(object sender, MouseEventArgs e) =>
DoDragDrop(((Label)sender).Text, DragDropEffects.All);
// Set the effect filter and allow the drop on this control
private void textBox1_DragOver(object sender, DragEventArgs e) =>
e.Effect = DragDropEffects.All;
// React to the drop on this control
private void textBox1_DragDrop(object sender, DragEventArgs e) =>
textBox1.Text = (string)e.Data.GetData(typeof(string));
' Initiate the drag
Private Sub Label1_MouseDown(sender As Object, e As MouseEventArgs)
DoDragDrop(DirectCast(sender, Label).Text, DragDropEffects.All)
End Sub
' Set the effect filter and allow the drop on this control
Private Sub TextBox1_DragOver(sender As Object, e As DragEventArgs)
e.Effect = DragDropEffects.All
End Sub
' React to the drop on this control
Private Sub TextBox1_DragDrop(sender As Object, e As DragEventArgs)
TextBox1.Text = e.Data.GetData(GetType(String))
End Sub
Para obtener más información sobre los efectos de arrastre, vea Data y AllowedEffect.
Consulte también
.NET Desktop feedback