如何将文件拖放到另一个应用程序上(就像我从文件资源管理器中拖动一样)


你好,
我想从文件资源管理器复制拖放操作,但从我的应用程序复制拖放操作,该应用程序将是 lislview 项目。

IE
将列表视图项目(文件路径)拖动到其他应用程序,就像资源管理器一样。

似乎有很多拖动到一个应用程序的示例,但很少有拖动到另一个应用程序的示例。

提前致谢

我尝试过的:

我已经在鼠标按下时尝试过此操作,但不是正确的方法

DataObject Data = New DataObject(DataFormats.FileDrop, files)
DragDrop.DoDragDrop(listTest, Data, DragDropEffects.Copy)

我什至想过使用剪贴板,但我再次认为这不是正确的方法。

已排序(如果其他人正在挣扎。

<ListView x:Name="Lst_File_Viewer" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Margin="5,3,5,3" SelectionMode="Single">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            <EventSetter Event="MouseMove"  Handler="Lst_File_Viewer_MouseMove" />
        </Style>
        
    </ListView.ItemContainerStyle>

    <ListView.View>
        <GridView AllowsColumnReorder="False">
            <GridViewColumn Header="File Name" Width="Auto" DisplayMemberBinding="{Binding Name}" />
            <GridViewColumn Header="Dir" Width="0" DisplayMemberBinding="{Binding Directory}" />
        </GridView>
    </ListView.View>
</ListView>
Private Sub Lst_File_Viewer_MouseMove(sender As Object, e As MouseEventArgs)
    If e.LeftButton = MouseButtonState.Pressed Then

        If e.Source IsNot Nothing Then
            Dim dataObject As DataObject ' = New DataObject(myList)
            Dim myList As StringCollection = New StringCollection
            For Each Item As File In Lst_File_Viewer.SelectedItems
                myList.Add(Item.Directory)


            Next


            dataObject = New DataObject()
            dataObject.SetFileDropList(myList)

            DragDrop.DoDragDrop(Lst_File_Viewer, dataObject, DragDropEffects.Copy)
        End If
    End If
End Sub

感谢您为我设定了正确的路径。

解决方案1

当您从资源管理器拖放到应用程序中时,接收者需要执行以下操作:
1) 处理DragEnter事件 将e.Effect设置为DragDropEffect.Copy或DragDropEffects.Move
2) 处理 DragDrop 事件并通过调用 e.Data.GetData 并向其传递 DataFormts.FileDrop 值来获取文件列表。 这将返回一个对象,如果有文件,该对象将是一个字符串数组 – 每个文件一个字符串,并包含文件的完整路径。

因此,以其他系统可以处理的格式从应用程序中拖出非常简单:构建路径数组并为 Form(或其他控件)调用 DoDragDrop 方法,传递数组和 DragDropEffects.Copy Ored 与 DragDropEffects.Move 作为第二个参数。

您可能还想查看 Control.QueryContinueDrag 事件 (System.Windows.Forms) | Control.QueryContinueDrag 事件 (System.Windows.Forms) 微软学习[^] 但如果您选择“任何应用程序”,那么您就不需要它了。

コメント

タイトルとURLをコピーしました