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

VB.NET Discussion :

Item suivant ListView


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 78
    Points
    78
    Par défaut Item suivant ListView
    Bonsoir à tous le monde.
    Je sèche sur un problème.... J'arrive pas a comprendre.

    J'ai une listview qui est programmer comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub Creer_listView_Version()
            'Creer le listview des Version de voiture pour le choix de voiture
     
            Choix_Voiture.ListVersion.View = View.Details
            Choix_Voiture.ListVersion.FullRowSelect = True
     
            Choix_Voiture.ListVersion.Columns.Add("Version", 160)
     
        End Sub

    J'ai ajouté un morceau de code dans la listview qui s'éffectue uniquement lorsque je clique dessus donc à l’événement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub ListVersion_MouseClick(sender As Object, e As MouseEventArgs) Handles ListVersion.MouseClick
    Ensuite j'ai 2 boutons... un bouton NEXT et un bouton BEFORE.

    Voici le bout de code du bouton BEFORE.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Dim version As Integer          'Version Actuellement selectionné
            Dim Nb_version As Integer       'Nombre de version sur le listview
            Dim I
     
            version = Me.ListVersion.SelectedItems.Item(0).Index
     
            If version <> "0" Then
               version = version - 1
     
                For I = 0 To Me.ListVersion.Items.Count - 1
                    Me.ListVersion.Items(I).SubItems(0).ForeColor = Color.Black
                Next I
     
                Me.ListVersion.Items(version).Selected = True
                Me.ListVersion.Items(version).SubItems(0).ForeColor = Color.Fuchsia
     
                MsgBox(Me.ListVersion.SelectedItems.Item(0).Index)
           end if
    Avec ce bout de code,, lorsque j'ai deux Item dans ma Listview et que je clique sur le bouton "BEFORE",,, il me sélectionne bien l'item précédent.

    Voici le code sur le bouton "NEXT"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Version As Integer
            Dim I
     
            Version = Me.ListVersion.SelectedItems.Item(0).Index
            Version = Version + 1
     
            For i = 0 To Me.ListVersion.Items.Count - 1
                Me.ListVersion.Items(i).SubItems(0).ForeColor = Color.Black
            Next i
     
            Me.ListVersion.Items(Version).Selected = True
            Me.ListVersion.Items(Version).SubItems(0).ForeColor = Color.IndianRed
     
            MsgBox(Me.ListVersion.SelectedItems.Item(0).Index)
    Avec ce bout de code,, lorsque j'ai le premier item selectionné (item 0) il me colore bien le deuxième item mais Msgbox me renvoit toujours "0". Le code ne sélectionne pas l'item suivant dans le ListView.

    Le code est totalement identique entre BEFORE et NEXT .... Mais sur l'un sa marche, et pas sur l'autre....

  2. #2
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Ton code est un poil incomplet, de plus pour gérer la sélection d'item on n'utilises pas "MouseClick" car ça agit sur s'ensemble du contrôle Listview hors toi tu veux que l'event se déclenche lors de la sélection d'un ListViewItem, donc utilises ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub ListVersion_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles ListVersion.ItemSelectionChanged
     
    If e.IsSelected
        Msgbox(e.item.text)
    Else
        '...bla bla bla......
    End If
     
    End Sub
    Ensuite concernant la navigation j'implémenterais cela ainsi dans un projet avec 2 ToolStripButton (BtnMoveUp et BtnMoveDown) et 1 Listview (LvMain) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
       Private Sub TsBtnMoveUp_Click(sender As System.Object, e As System.EventArgs) Handles TsBtnMoveUp.Click
            ' Déplacement vers le haut
            MoveListViewItem(LvMain, True)
       End Sub
     
       Private Sub TsBtnMoveDown_Click(sender As System.Object, e As System.EventArgs) Handles TsBtnMoveDown.Click
            ' Déplacement vers le bas
            MoveListViewItem(LvMain, False)
       End Sub
     
      Private Sub MoveListViewItem(ByRef lv As ListView, moveUp As Boolean)
            Dim i%
            Dim cache$
            Dim selIdx%
     
            With lv
                selIdx = .SelectedItems.Item(0).Index
                If moveUp Then
                    ' On ignore le mouvement vers le haut car l'index est égal à zéro 
                    If selIdx = 0 Then Exit Sub
                    For i = 0 To .Items(selIdx).SubItems.Count - 1
                        cache = .Items(selIdx - 1).SubItems(i).Text
                        .Items(selIdx - 1).SubItems(i).Text = .Items(selIdx).SubItems(i).Text
                        .Items(selIdx).SubItems(i).Text = cache
                    Next
                    .Items(selIdx - 1).Selected = True
                    .Refresh()
                    .Focus()
                    If selIdx = 1 Then
                        ' On passe le bouton permettant de naviguer vers le haut à l'état Disabled
                        TsBtnMoveUp.Enabled = False
                    End If
                Else
                    ' On ignore le mouvement vers le bas car l'index égal au nomlbre d'éléments présents dans le listview
                    If selIdx = .Items.Count - 1 Then Exit Sub
                    For i = 0 To .Items(selIdx).SubItems.Count - 1
                        cache = .Items(selIdx + 1).SubItems(i).Text
                        .Items(selIdx + 1).SubItems(i).Text = .Items(selIdx).SubItems(i).Text
                        .Items(selIdx).SubItems(i).Text = cache
                    Next
                    .Items(selIdx + 1).Selected = True
                    .Refresh()
                    .Focus()
                    If selIdx = .Items.Count - 2 Then
                        ' On passe le bouton permettant de naviguer vers le bas à l'état Disabled
                        TsBtnMoveDown.Enabled = False
                    End If
                End If
            End With
        End Sub
    Il existe peut-être une meilleure alternative mais là c'est tout ce qui m'est passé par la tête.

    A+

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 78
    Points
    78
    Par défaut
    Bonjour.

    Au vu de ta réponse, je pense que je ne t'ai pas donné assez d'explication.

    Il y a 3 ListView.
    Le premier listview affiche des informations d'une BDD.
    En fonction du choix sur le premiers listView,, on affiche d'autre informations sur le deuxième listView.
    En fonction du choix sur le deuxième listView,, on affiche des informations sur le troisième listView.

    Puis lors du choix sur le 3eme Listview,,, cela affiche une images et des informations liés au Choix du ListView1+2+3.

    Fonctionnement.

    A l'ouverture.
    Lorsque j'ouvre la form,, le programme me charge le ListView1. La je vais lire dans le registre le dernier Item que j'ai sélectionné avant de fermé le logiciel. Je sélectionne dans le listView cet item la. A partir de cet Item la,,, je charge le listView2. Je vais lire dans le registre... Et je charge le ListView 3 puis je vais lire dans le registre et j'affiche enfin les informations. Tout marche.

    Le but étant qu'il y ai toujours une image et des informations affichés.

    Lors de l'utilisation.
    1 - Une personne clique sur un item du listView1.
    L'item est sélectionné. Donc j'affiche dans le ListView2, tous les items en rapport avec l'item(listView1) sélectionné et je sélectionne automatiquement le premier Item(listView2). Ensuite j'affiche dans le listView3 toutes les informations relatives à l'item(listview2) selectionné. Le premier Item(ListView3) est sélectionné et j'affiche donc l'image et les informations.

    2 - Une personne clique sur un Item du ListView2.
    L'item est sélectionné. Donc j'affiche dans le Listview3, tous les items en rapport avec l'item(Listview2) sélectionné. Le premier Item(ListView3) est sélectionné automatiquement et j'affiche donc l'image et les informations.

    3 - Une Personne clique sur un Item du ListView3.
    j'affiche l'image et les informations.

    4 - A gauche et à droite de l'image, j'insère deux boutons. Btn_Before,,, Btn_Next.
    Lorsque je clique sur le Bouton "Btn_next"... Voici l'ordre.
    1 - Item listview3 - 1
    2 - Si Item Listview3 = 0 alors Item listview2 - 1 (je change d'item listview2 donc je charge dans le listview3 les nouveau items) et denrier Item listview3
    3 - Si Item Listview2 = 0 alors Item listview1 - 1 (je change .......)
    4 - Si item Listview1 = 0 alors il se passe rien.

    De sorte de remonter tous les items.

    Lorsque je clique sur le Bouton Btn_next..... c'est l'inverse. Item3+1 puis Item2+1 avec Premier Item3 sectionné ...etc etc


    Si je programme dans événementiel...... ItemSelectionChanged....... des que l'opérateur clique sur un Item... Sa marche, la procédure suit. Mais dès que j'appuie sur le bouton Btn_Before ou Btn_next,,, comme le premier code est dans ItemSelectionChanged,,,, alors automatiquement c'est l'item1 sélectionné est pas item+1 ou item-1. C'est la raisons du pourquoi j'utilise l'évènnement "MouseClick"

    Peu être que ces informations supplémentaires te seront utiles pour comprendre un peu mieux. Enfin si j'ai était assez clair car j'ai fait un pavé

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 78
    Points
    78
    Par défaut
    Bon,,, sa ne me dit pas pourquoi.....

    Mais j'ai passé les listview de

    à

    et sa marche..................

  5. #5
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par kitcarflo Voir le message
    Bon,,, sa ne me dit pas pourquoi.....

    Mais j'ai passé les listview de

    à

    et sa marche..................
    Parfait donc tu peux passer le sujet en résolu.

    NB : Saches que je n'avais pas besoin d'informations supplémentaires !

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

Discussions similaires

  1. ListView dynamique ne charge pas les items suivants
    Par samos2 dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 15/07/2012, 17h44
  2. Affecter une valeur à l'item suivant
    Par tommy_f dans le forum Forms
    Réponses: 2
    Dernier message: 09/01/2008, 17h26
  3. [AS3] Accéder à l'item suivant
    Par bolo dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 22/06/2007, 14h39
  4. [C#] Comment sélectionner un item de listview selon des critères
    Par beufreecasse dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/10/2006, 20h34
  5. [VB.NET]Impossible de sélectionner un item de listview
    Par SergeF dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/08/2006, 12h07

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