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] ListView, Deplacer un element


Sujet :

Windows Forms

  1. #1
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 34
    Par défaut [VB.NET] ListView, Deplacer un element
    Salut a tous,

    Voila je travaille actuellement sur une application qui a ete portee de VB6 sur VB.Net il y a presque un an. Et meme si dans l'ensemble le job est tres bien fait et les fonctionnalites marchent bien, je me retrouve avec une petite incoherence dans l'utilisation de l'application avec les listview.

    Au prealable sous VB6 quand un utilisateur faisait un drag and drop depuis une listview (attrape un item de la listview et le deplace pour le changer de position dans cette meme listview), si la listview etait trop petite pour le nombre d'items listes, la scrollbar verticale apparaissait.

    Ok Vb.Net fait toujours ca, juske la ca va!

    Seulement c'est la que ca se complique, la listview sous VB6 reagit comme explorer quand l'utilisateur attrape un item et le glisse vers le bas, vers la bordure du composant, la scrollbar du composant se deplace toute seule vers le bas pour faciliter la navigation de l'utilisateur, pour eviter qu'il lache l'item n'importe ou.
    Eh ben sous VB.Net pas moyen d'avoir le meme resultat, si j'attrape un item de la listview et essaie de le placer plus bas que les elements visibles, la scrollbar ne bouge pas... je suis oblige de faire mon drag and drop dans les elements visibles... Tres lourd!

    Je suis en train d'essayer de coder moi meme le mouvement de la scrollbar quand le pointeur de la souris atteind les bordures superieur ou inferieur mais c'est legerement penible comme codage surtout que je ne sais pas pkoi mais par exemple la ligne suivante qui devrait me retourner le Delta entre le Y de la position de la souris et le Y de la bordure inferieure du composant ne marche pas terrible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim p As Point
    p = Me.PointToScreen(Me.Location)
    Dim pos = MousePosition.Y - p.Y - listview.Top - listview.Height
    Maintenant si kkun peut me dire comment je peux retrouver ce behaviour facilement ou peut etre meme que j'ai loupe une propriete dans le composant je sais pas, mais je tourne en rond, je code sale et ca me fait mal a la tete!

    PLZ HELP!

  2. #2
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 34
    Par défaut
    Ok peut etre que je me suis mal exprime lors de mon premier essai, alors essayons encore (dite le moi si je suis pas clair)!

    Le composant ListView VB.Net ne permet pas de faire un scroll automatique, vers le haut comme vers le bas quand un utilisateur essaie de glisser deplacer un element de la liste.
    En gros l'utilisateur est obliger de faire un glisser deplacer dans la zone visible de la listview au moment ou il initie l'action.

    Or j'aimerais que cette listview scroll automatiquement vers le haut ou vers le bas lorsque l'utilisateur souhaite deplacer son element plus loin dans la liste, au dela de ce qui est actuellement visible pour lui.

    Un peu comme dans windows explorer quand on essaie de glisser deplacer un dossier ou un fichier plus bas dans la liste, au dela de ce que l'ecran affiche au moment de la selection, on laisse la souris vers le bas de la liste, et la scrollbar descend toute seule !

    Et de plus j'ai pu remarque que sous VB6 la listview avait bien ce comportement par defaut, sans rien coder.... Alors y a t'il une propriete a activer ou kkchose que j'ai loupe? Je sais pas, mais j'ai besoin d'un petit coup de pouce!

  3. #3
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 34
    Par défaut
    Voila un bout de code si ca peut aider:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub listview_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles listview.ItemDrag
     
      Dim LVIs(Me.listview.SelectedItems.Count - 1) As ListViewItem
     
      For I As Integer = 0 To Me.listview.SelectedItems.Count - 1
        LVIs(I) = Me.listview.SelectedItems(I)
      Next
     
      DoDragDrop(New DataObject("System.Windows.Forms.ListViewItem()", LVIs), DragDropEffects.Move)
     
    end sub
    Peut etre que mon probleme se trouve la dedans??

  4. #4
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 34
    Par défaut
    Voila apres presque 24H de tapage de tete contre les murs

    :trouve: la solution qui consiste en une simple ligne bien placee:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listview.ensurevisible(Item.index)
    Notez bien que j'ai dit bien placee, cad dans l'evenement DragOver et pas ailleurs, parce que cette ligne de code je joue avec depuis hier soir sans aucun resultat, jusqu'a ce que je decouvre DragOver!!!

    M'enfin l'essentiel (est dans lactel) c'est que ce soit RESOLU




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

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/12/2005, 22h07
  2. [VB.NET][ListView]des images dans une list view
    Par pcdj dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/12/2005, 12h08
  3. [VB.NET] listview : changer la couleur d'une cellule
    Par SergeF dans le forum Windows Forms
    Réponses: 6
    Dernier message: 28/10/2005, 08h58
  4. Réponses: 4
    Dernier message: 25/10/2005, 14h06
  5. [VB.NET] ListBox lié un element a une clé
    Par hirochirak dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/05/2004, 11h17

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