Wpf- Drag and Drop del nombre de un Fichero

Descripción general

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


↑↑↑

A.2.Enlaces

[Para saber mas]
[Grupo de documentos]
[Documento Index]
[Documento Start]
[Imprimir el Documento]
© 1997 - - La Güeb de Joaquín
Joaquín Medina Serrano
Ésta página es española

Codificación
Fecha de creación
Última actualización
[HTML5 Desarrollado usando CSS3]