Red de conocimiento informático - Material del sitio web - Arrastrar y soltar archivos en VB.NET

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 ( )