Arrastrar y soltar archivos en VB.NET
Este artículo describe cómo aceptar archivos de arrastrar y soltar en VB NET, es decir, al arrastrar y soltar archivos desde el administrador de recursos a la aplicación, obtendrá automáticamente los archivos arrastrados y soltados. El ejemplo de este artículo es un programa de muestra que acepta archivos de arrastrar y soltar y muestra el contenido del archivo en VB NET.
Para archivos de texto, podemos arrastrarlos directamente al Bloc de notas para ver el contenido del archivo. y luego arrástrelos a Editar en Photoshop. Para archivos de texto, podemos arrastrarlos al Bloc de notas para ver el contenido, mientras que para las imágenes, podemos arrastrarlos a Photoshop para editarlos directamente.
Idea
Sabemos que cada aplicación de Windows tiene una cola de mensajes, en la que el cuerpo principal del programa recibe mensajes del sistema y los distribuye (a formularios o controles). ¿Podemos agregar una clase de formulario a la bomba de mensajes de la aplicación? ¿Podemos agregar una clase de formulario a la bomba de mensajes de la aplicación?
En .NET, cualquier clase que implemente la interfaz IMessageFilter se puede agregar al bombeo de mensajes de una aplicación para filtrar mensajes antes de que se distribuyan a controles o formularios, o para realizar otras operaciones. El método AddMessageFilter en la clase Aplicación agrega un filtro de mensajes a la bomba de mensajes de la aplicación
Por lo tanto, llamamos a la Aplicación AddMessageFilter (Me) cuando se carga la aplicación. Sin embargo, el formulario o control no puede aceptar archivos de arrastrar y soltar de forma predeterminada, por lo que llamamos a WIN API DragAcceptFiles SourceSky para establecer si el control correspondiente puede aceptar archivos de arrastrar y soltar.
A través de esta API, puede configurar el control para aceptar archivos de arrastrar y soltar y luego usar DragQueryFile para consultar la lista de archivos de arrastrar y soltar, que es
Código
Sistema de importaciones Runtime InteropServices
Formulario de clase pública
Hereda el formulario de Windows Forms del sistema
Implementa IMessageFilter
Declaración API
Const WM_DROPFILES = amp;H? Arrastrar y soltar mensaje de archivo
lt;DllImport(shell dll)gt; Subcompartido público DragFinish(ByVal hDrop As Integer)
End Sub
lt;DllImport(shell dll )gt; Sub DragFinish compartido público (ByVal hDrop As Integer)
End Sub
lt; DllImport(shell dll )gt público compartido; Sub DragAcceptFiles(ByVal hwnd As Integer ByVal fAccept As Boolean)
End Sub
lt;DllImport(shell dll)gt;Función pública compartida DragQueryFile (ByVal HDROP como entero ByVal UINT como entero ByVal lpStr como texto del sistema StringBuilder ByVal ch como entero) Como entero
Función final
Subformulario privado _Load (remitente ByVal como objeto del sistema ByVale como EventArgs del sistema) Maneja la carga de MyBase
Aplicación AddMessageFilter(Me)
DragAcceptFiles(TextBox Handle ToInt True)
End Sub
Función PreFilterMessage(ByRef m As Message) Como implementos booleanos IMessageFilterPreFilterMessage
Si m Msg = WM_DROPFILES Entonces
Establecer la operación de arrastrar y soltar
Atenuar nfiles como Int
nfiles = DragQueryFile ( m WParam ToInt Nothing )
Dim i As Int
Dim *** Como nuevo texto del sistema StringBuilder ( )