[ad_1]
Salut,
Je veux répliquer le glisser-déposer depuis l’explorateur de fichiers mais depuis mon application qui sera un élément lislview.
c’est à dire
Faites glisser l’élément de liste (chemin du fichier) vers une autre application de la même manière que l’explorateur fonctionnerait.
Il semble y avoir beaucoup d’exemples à glisser vers une application mais très peu vers une autre.
Merci d’avance
Ce que j’ai essayé :
J’ai essayé cela avec la souris mais ce n’est pas la bonne approche
DataObject Data = New DataObject(DataFormats.FileDrop, files) DragDrop.DoDragDrop(listTest, Data, DragDropEffects.Copy)
J’ai même pensé à opter pour le presse-papiers mais encore une fois, je ne pense pas que ce soit la bonne approche.
Trié (juste si quelqu’un d’autre a du mal.
<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
Merci de m’avoir tracé le bon chemin.
Solution 1
Lorsque vous faites un glisser-déposer depuis l’explorateur vers une application, le récepteur doit effectuer plusieurs opérations :
1) Gérer l’événement DragEnter Définissez e.Effect sur DragDropEffect.Copy ou DragDropEffects.Move
2) Gérez l’événement DragDrop et récupérez la liste des fichiers en appelant e.Data.GetData et en lui transmettant la valeur DataFormts.FileDrop. Cela renvoie un objet qui, s’il existe des fichiers, sera un tableau de chaînes – une chaîne par fichier et contenant le chemin complet du fichier.
Donc, faire glisser votre application dans un format que l’autre système peut traiter est assez simple : créez un tableau de chemins et appelez la méthode DoDragDrop pour votre formulaire (ou un autre contrôle) en passant le tableau et DragDropEffects.Copy Ored avec DragDropEffects.Move as le deuxième paramètre.
Vous voudrez peut-être également consulter le Événement Control.QueryContinueDrag (System.Windows.Forms) | Microsoft Apprendre[^] mais si vous utilisez “n’importe quelle application”, vous ne devriez pas en avoir besoin.
[ad_2]
コメント