codigo que implementa la funcion Drag an Drop en un textbox cargando el nombre del fichero arrastrado
Este codigo muestra como se activa la funcionalidad Drag and Drop en un textBox para que acepte el nmbre de un fichero arrastrado
Es decir, arrastramos el nombre de un fichero al TextBox, y se copya em nombre del fiochero.
#Region "Drag and drop [Nombre de fichero] Version [2016/01/05] " '-------------------------------- 'BUG [2016/01/05] 'Las funciones de Drag and drop, en Wpf presentan un error si se tiene 'activada la referencia [Sytem.Windows.Forms]. 'La única manera de evitar el problema que he encontrado es 'usar el nombre completo en todos los objetos que 'intervienen en las funciones '-------------------------------- Private Sub ehDragOver(ByVal sender As Object, ByVal args As System.Windows.DragEventArgs) ' Como decisión de diseño arbitraria, queremos trabajar con un solo archivo. If auxHayUnFichero(args) IsNot Nothing Then args.Effects = System.Windows.DragDropEffects.Copy Else args.Effects = System.Windows.DragDropEffects.None End If ' Marcar el evento como controlado; por tanto, no llamar al controlador DragOver nativo de TextBox. args.Handled = True End Sub Private Sub ehDrop(ByVal sender As Object, ByVal args As System.Windows.DragEventArgs) ' Marcar el evento como controlado; por tanto, no llamar al controlador Drop nativo de TextBox. args.Handled = True Dim fileName As String = auxHayUnFichero(args) If fileName Is Nothing Then Return End If ' Establecer el nombre del archivo en el textBox. Me.textBoxSituacion.Text = fileName End Sub ' Si el objeto de datos de args es un solo archivo, este método devolverá un nombre de archivo. ' De lo contrario, devolverá null. Private Function auxHayUnFichero(ByVal args As System.Windows.DragEventArgs) As String ' Comprobar si hay archivos en el objeto de datos sobre el que se mantiene el mouse. If args.Data.GetDataPresent(DataFormats.FileDrop, True) Then Dim fileNames() As String = TryCast(args.Data.GetData(DataFormats.FileDrop, True), String()) ' Comprobar si hay un archivo o carpeta. If fileNames.Length = 1 Then ' Comprobar si hay un archivo (un directorio devolverá false). If System.IO.File.Exists(fileNames(0)) Then ' En este punto, se sabe que hay un solo archivo. Return fileNames(0) End If End If End If Return Nothing End Function #End Region
En la ventana, en el codigo xaml hay que escribir los controladores de eventos en el TextBox que quiero que acepte os datos.
<TextBox x:Name="textBoxSituacion" PreviewDragOver="ehDragOver" PreviewDrop="ehDrop" AllowDrop="True" />
y eso es todo
© 1997 - - La Güeb de Joaquín | |||||
Joaquín Medina Serrano
|
|||||
|
Codificación | |
Fecha de creación | |
Última actualización | |
![]() |