IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET]Drag and Drop dans une Listview


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut [VB.NET]Drag and Drop dans une Listview
    Bonjour,

    Quelqu'un a-t-il déja déplacé un item dans une Listview?
    Comment a-t-il fait?
    J'ai réussi à le faire dans une Listbox mais je n'arrive pas à le faire dans une Listview.
    Quelles sont les différences?
    Je suis en VB2005 Framework 2.0

    Merci d'avance à ceux qui répondront.

  2. #2
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    y'a des méthodes Remove et Insert dans la collection Items de ListView

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci Mose pour ta réponse.
    Mais le problème pour la méthode Insert, c'est qu'elle demande un index d'insertion, ce qui est logique.
    Je n'arrive pas à trouver comment obtenir l'index ou se trouve la souris après le déplacement de celle-ci pour insertion.
    Voici le code que j'ai écrit:

    Private Sub lsvT_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles lsvT.DragDrop
    If Not e.Data.GetDataPresent(GetType(System.Windows.Forms.ListViewItem)) Then
    Exit Sub
    End If
    Dim Source As New ListViewItem
    Source = CType(e.Data.GetData(GetType(System.Windows.Forms.ListViewItem)), ListViewItem)
    Dim I As Integer
    Dim Pt As Point = lsvT.PointToClient(New Point(e.X, e.Y))
    Dim toto As ListViewInsertionMark = lsvT.InsertionMark
    I = toto.NearestIndex(Pt)
    Dim Sourcb As New ListViewItem
    Dim c1 As String
    Dim c2 As String
    c1 = Source.Text
    c2 = Source.SubItems(1).Text
    Sourcb.Text = c1
    Sourcb.SubItems.Add(c2)
    lsvT.Items.Insert(I, Sourcb)
    lsvT.Items.Remove(Source)

    I me donne toujours -1
    Y-a-t-il une erreur dans mon code?
    Y-a-t-il un autre moyen de récupérer cet index?

  4. #4
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Moi y'en n'a pas parler VB
    * En C#, j'utilise myListView.GetItemAt(int x, int y), si tu essayes ça marche mieux ?

    * Si non : affiche les coordonnées x et y de ton drgevent : je suis pas sur qu'elles ne soient pas déjà en coordonnées client.

    * Dans le doute : j'utilise Control.MousePosition (propriété static) pour écupérer la position de la souris, et là je fais mas conversion en coordonnées client. Et là ca marche, garanti.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci Mose pour ton aide.
    J'ai bien une méthode ListView.GetItemAt qui conviendrait parfaitement, mais j'ai du mal à saisir la logique de VB.
    En effet, cette méthode demande comme arguments X et Y en Integer.
    Le problème, c'est que la méthode de conversion en coordonnées client (PointToClient) de la ListView donne le résultat dans un objet de type "point".
    Comment fais tu la conversion en c#?, ça me donnera peut être une idée.
    Ou, existe-il une méthode pour convertir un objet "point" en "integer"?
    Au fait, les coordonnées x et y de mon drgevent ne sont pas en coordonnées client (dommage).

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    J'ai trouvé!

    Suis-je bête. Je n'ai pas encore acquis le reflex "programmation Objet".
    Les coordonnées sont dans les propriétés de l'objet "Point", il suffit de les récupérer.
    En tout cas, encore merci Mose, tu m'as bien aidé, même si nous ne programmons pas dans le même langage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Drag And Drop dans une Grid
    Par amandinerenard dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 13/05/2013, 18h41
  2. probleme de Drag and drop dans une DataRepeater
    Par LibidoPostToxico dans le forum VB.NET
    Réponses: 0
    Dernier message: 24/06/2010, 18h32
  3. Drag and drop dans une seul listview
    Par jacko842 dans le forum VB.NET
    Réponses: 0
    Dernier message: 21/04/2010, 14h42
  4. [script.aculo.us] Drag and drop dans une div avec un scroll horizontal
    Par ridan dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 21/07/2009, 20h14
  5. [VB.net] Drag and drop dans une Treeview
    Par gégécap dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/10/2006, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo