Bagaimana cara drag & drop file ke aplikasi lain (sama seperti saya menyeret dari file explorer)

pemrograman


Hai,
Saya ingin mereplikasi drag & drop dari file explorer tetapi dari aplikasi saya yang akan menjadi item lislview.

yaitu
Seret item tampilan daftar (Jalur file) ke aplikasi lain yang sama seperti penjelajah.

Tampaknya ada banyak contoh menyeret ke suatu aplikasi tetapi sangat sedikit ke aplikasi lain.

Terima kasih sebelumnya

Apa yang saya coba:

Saya telah mencoba ini dengan mouse ke bawah tetapi bukan pendekatan yang benar

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

Saya bahkan berpikir untuk menggunakan clipboard tetapi sekali lagi menurut saya ini bukan pendekatan yang tepat.

Diurutkan (Hanya jika ada orang lain yang kesulitan.

<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

Terima kasih telah mengarahkan saya ke Jalan yang benar.

Solusi 1

Saat Anda melakukan drag’n’drop dari explorer ke suatu aplikasi, penerima perlu melakukan beberapa hal:
1) Tangani Acara DragEnter Atur e.Effect ke DragDropEffect.Copy, atau DragDropEffects.Move
2) Tangani Peristiwa DragDrop dan ambil daftar file dengan memanggil e.Data.GetData dan meneruskan nilai DataFormts.FileDrop ke dalamnya. Ini mengembalikan Objek yang jika ada file akan berupa array string – satu string per file dan berisi path lengkap ke file tersebut.

Jadi untuk mengeluarkan aplikasi Anda dalam format yang dapat diproses oleh sistem lain cukup sederhana: buatlah array jalur dan panggil metode DoDragDrop untuk Formulir Anda (atau kontrol lain) dengan meneruskan array dan DragDropEffects.Copy Ored dengan DragDropEffects.Move as parameter kedua.

Anda mungkin juga ingin melihat Acara Control.QueryContinueDrag (System.Windows.Forms) | Microsoft Belajar[^] tetapi jika Anda memilih “aplikasi apa pun” maka Anda tidak memerlukannya.

コメント

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