Trouver l'index d'une listbox [Résolu]

Signaler
Messages postés
106
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
8 mai 2020
-
Messages postés
15900
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 mai 2021
-
Hello Hello,

Je me casse la tête à essayer de trouver l'index d'une listbox si elle contient un certain texte :(
exemple :

 For Each item As String In Me.ListBox2.Items
If item.Contains("toto1234") Then Txt_index_find.Text = numéro d'index dans la listbox2
Next


En sachant que toto1234 ou autre item sont unique, est-ce que cela est possible ?
Merci pour vos pistes éventuelles

4 réponses

Messages postés
106
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
8 mai 2020

je pense avoir trouvé la bonne synthaxe :

For Each lbItem As String In ListBox2.Items
If lbItem.Contains("toto1234") Then
ListBox2.SelectedItem = lbItem
Return
End If
Next
Messages postés
15900
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 mai 2021
540
Ce code ne retourne pas l'index, ce qui est ta question initiale...
Messages postés
15900
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 mai 2021
540
Bonjour


option 1:
VB.Net est un langage prévu pour la liaison de données (binding), où le contrôle ne sert que d'interface entre l'utilisateur et la source de données.
Donc la source de données est par exemple une List(Of String), elle est bindée sur la ListBox
maListBox.DataSource = maListe

Et plus loin, on pour trouver l'index d'un item
Dim index = maListe.IndexOf(item)


Mieux encore, on pourrait même se servir d'un BindingSource pour lier plusieurs contrôles à différentes propriétés d'une source de données, voir ici https://codes-sources.commentcamarche.net/source/100588-utilisation-du-binding-a-travers-l-objet-data-binding-source

option 2:
On préfère coder comme en VB6 ou VBA, il ne faut pas faire un foreach qui n'a aucune notion d'index mais un for
Dim index as Integer
For i = 0 to ListBox2.Items.Count -1
  If ListBox2.Items(i) = "toto1234" Then
        index = i
        break
   End if
Next


PS remarques tu que le code que les gens qui répondent (c'est pareil dans tes autres questions) est coloré, bien présenté, scrollable et avec des numéros de lignes. C'est parce que nous utilisons mieux les balises de code que toi. Voir ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code Il est possible à force de ne pas faire l'effort de présenter un code facile à lire, que l'on ne fasse plus l'effort de te répondre.
Messages postés
106
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
8 mai 2020

Merci pour toute ces précisions Wishmeril, désolé pour l'aspect des balises j'y ferai attention la prochaine fois. Je n'utilise pas de Binding source car j'essai de récupérer mes adresses IP listées dans ma listbox.

Dim index as Integer
For i = 0 to ListBox2.Items.Count -1
  If ListBox2.Items(i) = "toto1234" Then
        index = i
        break
   End if
Next
Messages postés
15900
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 mai 2021
540
Je n'utilise pas de Binding source car j'essai de récupérer mes adresses IP listées dans ma listbox

Non, tu n’utilises pas le binding parce que tu ne sais pas ou ne veux pas. Lister des ip des carottes ou des éléphants n’a rien à voir là dedans.