Listview Drag & Drop: faire la somme des subitems si les items.text sont égale

tgilles Messages postés 2 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 7 avril 2009 - 6 avril 2009 à 18:54
tgilles Messages postés 2 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 7 avril 2009 - 7 avril 2009 à 22:19
Bonjour,

Dans mon programme (un inventaire d'objets dans un jeux)Je fais du Drag&Drop entre 3 listview. Cela marche très bien mais je voudrais ajouter la fonction suivante:

mes items contiennent des noms d'objet et leurs subitem(0) contient la Quantité de chaque objet

Quand le text de l'item que je "drag" est identique au texte de l'item sur lequel je le "Drop" au lieu de déplacer l'item dans la liste je voudrais qu'il rajoute la quatité de l'objet de départ à la quantité d'objet de destination:
Voici mon code :

Private Sub ListViewDragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Lstv_Inv1.DragDrop, Lstv_Inv2.DragDrop, Lstv_Inv3.DragDrop
Dim lvItem As ListViewItem
Dim destItem As ListViewItem
Dim destLv As ListView = CType(sender, ListView)
Dim StrtLv As ListView = CType(sender, ListView)
Dim clX As Integer = destLv.PointToClient(New Point(e.X, e.Y)).X
Dim clY As Integer = destLv.PointToClient(New Point(e.X, e.Y)).Y


If e.Data.GetDataPresent("System.Windows.Forms.ListViewItem", False) Then
'dragging a listview item
lvItem = CType(e.Data.GetData("System.Windows.Forms.ListViewItem"), ListViewItem)
destItem = CType(sender, ListView).GetItemAt(clX, clY)

If destItem Is Nothing Then
destLv.Items.Insert(destLv.Items.Count, lvItem.Clone)

ElseIf destItem.Text = lvItem.Text Then

'C'EST ICI QUE JE VOUDRAIS
' RAJOUTER LA FONCTION EXPLIQUEE

Else
destLv.Items.Insert(destItem.Index, lvItem.Clone)
End If

lvItem.Remove()
End If
End Sub


Merci d'avance pour votre aide

Gilles
A voir également:

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 avril 2009 à 03:01
Salut
Illisible
0
tgilles Messages postés 2 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 7 avril 2009
7 avril 2009 à 22:19
Effectivement, je ne sais pas comment faire à coller le code pour qu'il soit lisible...
j'essaye de formatter moi même le code :

Private Sub ListViewDragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Lstv_Inv1.DragDrop, Lstv_Inv2.DragDrop, Lstv_Inv3.DragDrop

Dim lvItem As ListViewItem
Dim destItem As ListViewItem
Dim destLv As ListView = CType(sender, ListView)
Dim StrtLv As ListView = CType(sender, ListView)
Dim clX As Integer = destLv.PointToClient(New Point(e.X, e.Y)).X
Dim clY As Integer = destLv.PointToClient(New Point(e.X, e.Y)).Y

If e.Data.GetDataPresent("System.Windows.Forms.ListViewItem", False) Then
    lvItem = CType(e.Data.GetData("System.Windows.Forms.ListViewItem"), ListViewItem)
    destItem = CType(sender, ListView).GetItemAt(clX, clY)
        If destItem Is Nothing Then
        destLv.Items.Insert(destLv.Items.Count, lvItem.Clone) 
       
        ElseIf destItem.Text = lvItem.Text Then 

        'C'EST ICI QUE JE VOUDRAIS ' RAJOUTER LA FONCTION EXPLIQUEE
 
        Else destLv.Items.Insert(destItem.Index, lvItem.Clone)

       End If
    lvItem.Remove()
End If
End Sub

Voila' j'espère que c'est plus clair.

j'ai essayer 
destItem.SubItems(0).Text = cInt(lvItem.SubItems(0).Text) + cInt(destItem.SubItems(0).Text)  mais ca ne marche pas

il me marque "Item = Overload resolution failed because no accessible 'Item' accepts this number of arguments." et il sort de la ' Sub sans rien faire...

Un précisation je travaille avec vb 2008 Express

Merci pour ta réponse
0
Rejoignez-nous