¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo
Expandir Minimizar

Control.DragDrop (Evento)

Se produce cuando termina una operación de arrastrar y colocar.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public event DragEventHandler DragDrop
/** @event */
public void add_DragDrop (DragEventHandler value)

/** @event */
public void remove_DragDrop (DragEventHandler value)

En JScript, se pueden controlar los eventos que define una clase, pero no se pueden definir unos propios.
No aplicable.

Las propiedades X y Y de DragEventArgs son coordenadas de pantalla, no son coordenadas de cliente En la siguiente línea de código de Visual C# se convierten las propiedades en un Point cliente.

Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));
NotaNota:

En las versiones anteriores a Microsoft .NET Framework versión 2.0, si pone un UserControl con eventos DragEnter y DragDrop en un formulario Windows Forms, y arrastra y coloca algo en el UserControl en tiempo de diseño, se producen los eventos DropDrop y DropEnter. Sin embargo, cuando cierra y vuelve a abrir la solución, los eventos DragEnter y DragDrop no se producen de nuevo.

Para obtener más información sobre la forma de controlar eventos, vea Utilizar eventos.

En el ejemplo de código siguiente se muestra una operación de arrastrar y colocar entre dos controles ListBox. En el ejemplo se llama al método DoDragDrop cuando se inicia la acción de arrastrar. La acción de arrastrar se inicia si se ha movido el mouse más de SystemInformation.DragSize desde su ubicación durante el evento MouseDown. El método IndexFromPoint se utiliza para determinar el índice del elemento que se va a arrastrar durante el evento MouseDown.

En el ejemplo también se muestra la utilización de cursores personalizados para la operación de arrastrar y colocar. Este ejemplo requiere que haya dos archivos de cursor (3dwarro.cur y 3dwno.cur) en el directorio de la aplicación para los cursores personalizados de arrastrar y prohibición de colocar, respectivamente. Los cursores personalizados se utilizan si se ha activado UseCustomCursorsCheckCheckBox. Los cursores personalizados se establecen en el controlador de eventos GiveFeedback.

El estado del teclado se evalúa en el controlador de evento DragOver del control ListBox derecho, con el fin de determinar qué operación de arrastrar se realizará en función del estado de las teclas MAYÚS, CTRL, ALT o CTRL+ALT. La ubicación en ListBox donde se va a producir la operación de colocar también se determina durante el evento DragOver. Si los datos que se van a colocar no son de tipo String, el valor de la propiedad DragEventArgs.Effect se establece en None en DragDropEffects. Por último, el estado de la operación de colocar se muestra en DropLocationLabelLabel.

Los datos que se colocan para el ListBox correcto se determinan en el controlador de eventos DragDrop y el valor String se agrega a la ubicación apropiada de ListBox. Si la operación de arrastrar se realiza fuera de los límites del formulario, la operación de arrastrar y colocar se cancelará en el controlador de eventos QueryContinueDrag.

En este fragmento de código se muestra cómo utilizar el evento DragDrop. Para obtener el ejemplo completo del código, vea el método DoDragDrop.

private void ListDragTarget_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) 
{
    // Ensure that the list item index is contained in the data.
    if (e.Data.GetDataPresent(typeof(System.String))) {

        Object item = (object)e.Data.GetData(typeof(System.String));

        // Perform drag-and-drop, depending upon the effect.
        if (e.Effect == DragDropEffects.Copy ||
            e.Effect == DragDropEffects.Move) {
        
            // Insert the item.
            if (indexOfItemUnderMouseToDrop != ListBox.NoMatches)
                ListDragTarget.Items.Insert(indexOfItemUnderMouseToDrop, item);
            else
                ListDragTarget.Items.Add(item);
            
        }
    }
    // Reset the label text.
    DropLocationLabel.Text = "None";
}

private void listDragTarget_DragDrop(Object sender, 
    System.Windows.Forms.DragEventArgs e)
{
    // Ensure that the list item index is contained in the data.
    if (e.get_Data().GetDataPresent(String.class.ToType())) {
        Object item = (Object)(e.get_Data().GetData(
               String.class.ToType()));
        // Perform drag-and-drop, depending upon the effect.
        if (e.get_Effect().Equals(DragDropEffects.Copy) || 
            e.get_Effect().Equals(DragDropEffects.Move)) {
            // Insert the item.
            if (indexOfItemUnderMouseToDrop != ListBox.NoMatches) {
                listDragTarget.get_Items().Insert(
                    indexOfItemUnderMouseToDrop, item);
            }
            else {
                listDragTarget.get_Items().Add(item);
            }
        }
    }
    // Reset the label text.
    dropLocationLabel.set_Text("None");
} //listDragTarget_DragDrop

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0
Mostrar:
© 2015 Microsoft