Listview Drag & Drop: faire la somme des subitems si les items.text sont égale
tgilles
Messages postés2Date d'inscriptionmardi 13 mai 2008StatutMembreDernière intervention 7 avril 2009
-
6 avril 2009 à 18:54
tgilles
Messages postés2Date d'inscriptionmardi 13 mai 2008StatutMembreDerniè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:
Listview Drag & Drop: faire la somme des subitems si les items.text sont égale
tgilles
Messages postés2Date d'inscriptionmardi 13 mai 2008StatutMembreDerniè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
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...