DragAndDrop von Dateien aus Windows Explorer

  • WPF
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von kafffee.

    DragAndDrop von Dateien aus Windows Explorer

    Guten Morgen :)

    Ich versuche gerade Dateinamen aus dem Windows Explorer auf ein Image ziehen zu können.

    Hab folgenden Code gefunden, der auch funktioniert, aber die Prozedur MeinLogo_Drop wird immer zwei Mal aufgerufen, wenn ich Dateien auf das Image droppe...

    Hört sich erstmal nach redundante Instanzen an, aber ich hab in meinem Projekt sonst nix, nur das hier in der MainWindow.xaml:


    XML-Quellcode

    1. <Window x:Class="MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    6. xmlns:viewmodel="clr-namespace:ExplorerDragNDropTest.ViewModel;assembly=ExplorerDragNDropTest.ViewModel"
    7. mc:Ignorable="d"
    8. Title="MainWindow" Height="450" Width="800">
    9. <Grid>
    10. <Image Name="MeinLogo" Source="C:\Test.jpeg" Width="150" Height="150" AllowDrop="True" Drop="MeinLogo_Drop" DragOver="MeinLogo_DragOver"/>
    11. </Grid>
    12. </Window>


    Und dann das in der MainWindow.xaml.vb:

    VB.NET-Quellcode

    1. Class MainWindow
    2. Public Sub New()
    3. ' Dieser Aufruf ist für den Designer erforderlich.
    4. InitializeComponent()
    5. ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
    6. MeinLogo.AddHandler(MeinLogo.DragOverEvent, New DragEventHandler(AddressOf MeinLogo_DragOver), True)
    7. MeinLogo.AddHandler(MeinLogo.DropEvent, New DragEventHandler(AddressOf MeinLogo_Drop), True)
    8. End Sub
    9. Private Sub MeinLogo_DragOver(sender As Object, e As DragEventArgs)
    10. If e.Data.GetDataPresent(DataFormats.FileDrop) Then
    11. e.Effects = DragDropEffects.All
    12. Else
    13. e.Effects = DragDropEffects.None
    14. End If
    15. e.Handled = False
    16. End Sub
    17. Private Sub MeinLogo_Drop(sender As Object, e As DragEventArgs)
    18. Debug.WriteLine("Dateien gedroppt!")
    19. If e.Data.GetDataPresent(DataFormats.FileDrop) Then
    20. Dim docPath As String() = TryCast(e.Data.GetData(DataFormats.FileDrop), String())
    21. For Each DateiName In docPath
    22. Debug.WriteLine(DateiName)
    23. Next
    24. End Sub
    25. End Class


    Weiss jemand vielleicht woran das liegen kann?

    Auch funktioniert das Ziehen zwar vom Windows Explorer, aber nicht vom Desktop...