2010-05-21 23 views
16

Sé que ha habido un montón de respuestas sobre este tema, pero todavía no puedo hacer que funcione en absoluto. He habilitado AllowDrop en cada control en cada nivel de la aplicación, e intenté capturar DragEnter y Drop en cada control sin ningún resultado. Puedo arrastrar y soltar elementos dentro de la aplicación, pero cada vez que trato de introducir algo desde Windows Explorer o el escritorio, etc. me da el ícono No. ¿Alguna idea de lo que podría estar haciendo mal?¿Cómo puedo permitir arrastrar y colocar desde el Explorador de Windows en una aplicación C# WPF?

Aquí hay un ejemplo de lo que estoy haciendo. Aún no muestra el cursor de movimiento y no golpeará la función MainWindow_DragEnter.

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      this.AllowDrop = true; 
      this.DragEnter += new DragEventHandler(MainWindow_DragEnter); 
     } 

     void MainWindow_DragEnter(object sender, DragEventArgs e) 
     { 
      e.Effects = DragDropEffects.Move; 
     } 
    } 
} 

Respuesta

13

AllowDrop sólo activa la posibilidad de usar arrastrar & gota. Tienes que manejarlo tú mismo.

Como ha visto, los objetos que tienen AllowDrop también tienen los eventos DragEnter, DragOver, DragLeave. Tienes que codificar lo que quieres que suceda en este momento. Puede cambiar el cursor, aceptar elementos sueltos, etc. Pero debe hacerlo usted mismo. P.ej. busca DragEventArgs.Effects.

Acabo de abrir una nueva aplicación WPF, ventana seleccionada, habilitado AllowDrop, agregado controlador de eventos DragEnter y puesto allí: e.Effects = DragDropEffects.Move; Funciona bien para mí.

+0

Intenté esto y tuvo los mismos resultados. Pongo un punto de interrupción en la función MainMindow_DragEnter, pero nunca se golpea cuando arrastro algo desde la ventana del Explorador. El cursor sigue siendo el signo "No". –

+4

Gracias, su solución habría funcionado bien si no estuviera en modo Administrador en Visual Studio. –

+0

Gracias Seabass__ ¡Estaba desesperado por este problema de "Administrador"! – germanSharper

29

He resuelto mi problema, creo. Estaba ejecutando Visual Studio como administrador. Cuando lanzó mi aplicación, no reconoció los arrastres de Explorer porque Explorer se estaba ejecutando en modo Usuario. Espero que este movimiento tonto ayude a alguien más a salir.

+0

Este no fue mi problema, pero descubrí que [TextBox, RichTextBox y FlowDocument] (http://stackoverflow.com/a/336283/116047) todos necesitan [algunos ajustes] (http: //social.msdn .microsoft.com/forums/es-US/wpf/thread/a539c487-1dec-4935-b91b-c3ec252eb834) para habilitar la función arrastrar y soltar. – Pakman

+0

Estaba ejecutando VS como administrador en la ventana 7 y obtengo el signo "No", lo mismo ocurre con la ejecución de la aplicación de forma independiente como administrador. Ahora, para descubrir cómo conseguir que Arrastrar y soltar funcione para aplicaciones con privilegios elevados ... http://stackoverflow.com/questions/2833709/c-sharp-drag-drop-does-not-work-on-windows-7 – Llyle

Cuestiones relacionadas