[Résolu][VB .net] Drag & drop entre deux applications

Drag & drop entre deux applications [Résolu][VB .net] - C#/.NET managed - Programmation

Marsh Posté le 08-11-2005 à 17:12:27    

Bonjour,
 
Voulant classer et retrouver rapidement ma musique préférée, je me suis fait une appli en VB.net qui va piocher ses infos dans une base de données.
Tout marche à merveille mais afin d'améliorer l'ergonomie, j'aimerai pouvoir glisser/déplacer un des résultats de ma recherche vers winamp par exemple.
 
A savoir que mes résultats sont affichés dans un composant listview.
 
Après plusieurs longues heures de recherche, j'en suis toujours au point mort (j'ai trouvé des liens qui parle de OLE mais c'est pour VB 6 :fou:)
 
Voici le peu de code que j'ai réussi à produire pour tester. Le drag and drop est accepté par l'appli destinatrice mais ca ne charge strictement rien :'(.
 

Code :
  1. Private Sub lst_result_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles lst_result.ItemDrag
  2.         If lst_result.FocusedItem Is Nothing Then
  3.         Else
  4.             If lst_result.FocusedItem.Index >= 0 Then
  5.                 'put the file path is a string array
  6.                 Dim files As String
  7.                 files = lst_result.Items(lst_result.FocusedItem.Index).SubItems(6).Text
  8.                 'create a dataobject holding this array as a filedrop
  9.                 Dim data As New DataObject(DataFormats.FileDrop, files)
  10.                 'also add the selection as textdata
  11.                 data.SetData(DataFormats.StringFormat, lst_result.Items(lst_result.FocusedItem.Index).SubItems(6).Text)
  12.                 'do the dragdrop
  13.                 Me.DoDragDrop(data, DragDropEffects.Copy)
  14.             End If
  15.         End If
  16.     End Sub


Message édité par jeoff le 08-11-2005 à 17:45:38
Reply

Marsh Posté le 08-11-2005 à 17:12:27   

Reply

Marsh Posté le 08-11-2005 à 17:44:53    

La persévérance paye toujours  :jap:  
 
La solution (trouvé ici http://216.239.59.104/search?q=cac [...] irefox-a):
 

Code :
  1. Private Sub lst_result_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles lst_result.ItemDrag
  2.         'teste si des items ont été selectionnés dans la liste
  3.         If lst_result.SelectedItems.Count > 0 Then
  4.             'tableau de chaines de caractères (autant de chaine que de résultats sélectionnés/gère la selection multiple)
  5.             Dim strFilesPath() As String
  6.             ReDim strFilesPath(lst_result.SelectedItems.Count - 1)
  7.             'tant que tout les items selectionnés n'ont pas été traités
  8.             For i As Integer = 0 To lst_result.SelectedItems.Count - 1
  9.                 strFilesPath(i) = lst_result.SelectedItems.Item(i).SubItems(6).Text
  10.             Next
  11.             'convertit le chemin d'accès au fichier du/des items selectionnés en drag and drop vers "explorer"/appli tierce
  12.             Dim dt As DataObject = New DataObject(DataFormats.FileDrop, strFilesPath)
  13.             lst_result.DoDragDrop(dt, DragDropEffects.Copy)
  14.         End If
  15.     End Sub


Message édité par jeoff le 08-11-2005 à 17:46:18
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed