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

Messages postés
97
Date d'inscription
mardi 19 mai 2015
Dernière intervention
7 février 2019
- - Dernière réponse : Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
- 5 févr. 2019 à 12:05
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
Afficher la suite 

Votre réponse

4 réponses

Messages postés
97
Date d'inscription
mardi 19 mai 2015
Dernière intervention
7 février 2019
0
Merci
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
Whismeril
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332 -
Ce code ne retourne pas l'index, ce qui est ta question initiale...
Commenter la réponse de jerlo11
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332
0
Merci
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.
Commenter la réponse de Whismeril
Messages postés
97
Date d'inscription
mardi 19 mai 2015
Dernière intervention
7 février 2019
0
Merci
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
Commenter la réponse de jerlo11
Messages postés
12729
Date d'inscription
mardi 11 mars 2003
Dernière intervention
16 février 2019
332
0
Merci
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.
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.