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

Signaler
Messages postés
2
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
7 avril 2009
-
Messages postés
2
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
7 avril 2009
-
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

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Illisible
Messages postés
2
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
7 avril 2009

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