Estoy intentando implementar una operación de arrastrar y soltar. Quiero mostrarle a mi usuario una vista de lista con archivos. Cuando el usuario arrastra un archivo y lo deja caer en una carpeta, el contenido debe descargarse y entregarse.Implementar la función de arrastrar y soltar
Estoy usando la interfaz IDataObject, pero mi problema es que el método GetData() es consultado demasiado pronto. Por ejemplo, un arrastre sobre el escritorio (sin ninguna caída) consultará el método GetData() un par de veces. Y cada una de estas llamadas inicia la descarga del archivo:/
Ahora, mi pregunta es: ¿Qué ocurre aquí? ¿Por qué se llama al método GetData() sin ninguna caída? ¿Hay alguna otra forma de implementar las operaciones de arrastre perezoso & en .net?
El problema que tendrá es escuchar el evento de caída en Explorer, que es cuando desea iniciar la descarga. Puede hacer una prueba de concepto arrastrando y soltando sobre otro control en su formulario, que podrá suscribirse al evento drop de. –
Sí, esto podría ayudarme, pero suena mucho más complicado y me obliga a dejarlo solo al explorador. Otros targest, que aceptan filtros normalmente, no podrían obtener los datos. En teoría, el evento drop debería llamar a * IDataObject.GetData() * - y solo debería hacerlo. Entonces puedo entregar los datos (directos o por descarga). Sin embargo, hay llamadas a estas funciones sin una caída involucrada, lo que hace inutilizable este enfoque. – tanascius
¿No hay forma de retrasar la descarga hasta que el receptor realmente solicite ver los bytes? –