none
ListBox multiselect comment lire ? RRS feed

  • Question

  • Bonjour,

    Comment lire une multisélection de listBox ?

    J'ai un peu essayé plein de combinaisons, mais ça ne donne rien, en fait je cherche à lire quels sont les items éventuellement sélectionnés dans une listbox multisélection, exemple (qui est accepté mais plante a l'exécution) :

    For i = 0 To ListBox2.Items.Count - 1
     If ListBox2.Items(i).SelectedIndex = True Then
      ListBox1.Items.Add(ListBox2.Items(i))
     End If
    Next i
     
    ListBox2.Items(i) is SelectedIndex = True
    ListBox2.Items(i) is SelectedIndex
    ListBox2.Items(i) = SelectedIndex
    ListBox2.Items.SelectedIndex(i) = True
    
    



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    jeudi 11 août 2011 09:12

Réponses

Toutes les réponses

  • Ben j'ai la réponse :

     

     

    For i = 0 To ListBox2.Items.Count - 1
      If ListBox2.GetSelected(i) = True Then MsgBox("Sélectionné" & VbLf & i)
    Next i
    

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire

    • Marqué comme réponse EhJoe jeudi 11 août 2011 10:01
    • Modifié EhJoe jeudi 11 août 2011 10:03 modif code
    jeudi 11 août 2011 10:01
  • Bonjour Joe,

    Tu devrais utiliser le tableau SelectedItems qui contient tous les éléments sélectionnés

    voici un exemple:

    Public Class FormMain
     Private Sub FormMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Button1.Text = "Copie"
      ListBox1.SelectionMode = SelectionMode.MultiExtended ' sélection avec les touches CTRL et MAJ
      ListBox2.Items.Clear()
      For i As Integer = 1 To 30
       ListBox1.Items.Add(i.ToString())
      Next
     End Sub
    
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      If ListBox1.SelectedItems.Count <> 0 Then
       For i As Integer = 0 To ListBox1.SelectedItems.Count - 1
        ListBox2.Items.Add(ListBox1.SelectedItems(i))
       Next
      End If
     End Sub
    End Class
    



    fred
    jeudi 11 août 2011 13:17
  • Bonjour Fred,

    Merci, mais je ne comprends pas trop pourquoi tu m'écris ceci :

    For i As Integer = 0 To ListBox1.SelectedItems.Count - 1
    

    Dans la mesure ou ma liste est du multiselect ETENDU, il peut y avoir plusieurs zones sélectionnées séparées par des zones non sélectionnées, est-ce que ça marche dans ce cas, car j'ai l'impression que ton code s'adapte seulement à une multisélection simple, donc contigüe ?

    Et si jamais c'était fonctionnel, pourquoi ce serait mieux ce que tu proposes, car j'ai conservé les bonnes vieilles méthodes du vb6 ?

    Au plaisir :o)



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    jeudi 11 août 2011 13:33
  • Joe,

    oui cela fonctionne avec des multi-sélections non contigus

    compile le code et regarde si tu sélectionnes plusieurs lignes qui ne sont pas contigus.

    C'est bien VB6 mais je pense qu'il faut évoluer vers le .Net.

    Pourquoi parcourir tous les éléments de ListBox2 pour chercher les getSelected(i) quand tu as un tableau ListBox1.SelectedItems() qui contient déjà tous les éléments sélectionnés ?

     


    fred
    jeudi 11 août 2011 17:42