Conserver l'index en cas de saisie dans une ComboBox de style DropDown

Signaler
-
 Utilisateur anonyme -
Bonjour,

J'ai une ComboBox dont le DropDownStyle est DropDown, donc j'autorise la saisie d'une nouvelle valeur. Son DataSource est un DataTable remplit par une requête SQL et comprenant 3 colonnes. Lorsque je sélectionne une valeur dans la liste de mon ComboBox, je récupère en fait les informations des 3 colonnes, et au passage je récupère aussi l'index interne à la ComboBox pour info. Jusqu'ici tout va bien!

Lorsqu'au lieu de sélectionner dans la liste, on saisit quelque chose dans la zone prévue à cette effet, le SelectIndex vaut -1, .Puisqu'aucune valeur de la liste n'a été sélectionnée, c'est logique. Donc ca me va bien!

Mais je fais aussi un test sur la valeur saisie pour savoir si par hasard, l'utilisateur ne ressaisirait pas une valeur déjà existante dans ma liste. Auquel cas, je voudrais que l'index soit repositionné sur la valeur correspondante de la liste. Donc, si par exemple le texte saisi correspond au texte de la liste à l'index 3, j'ai écrit dans mon code
 
ComboBox_Company.SelectedIndex = ComboBox_Company.Items.IndexOf(ComboBox_Company.Items(i))

(Je fais une boucle i sur la collection d'items de ma Combobox).
Et ca marche toujours!

MAIS LA... C'EST LE DRAME! dès que je perds le focus de ma ComboBox, par exemple en cliquant sur le bouton "Valider" de mon formulaire, le SelectIndex revient systématiquement à -1 !!!?????

Si quelqu'un peut m'expliquer pourquoi et surtout comment conserver l'index trouvé...

1 réponse


Salut,

Tu pourrais stocker ton index provisoire (i) dans une variable locale.
dim monindex as integer

Et mémoriser l'index comme ceci lorsque tu le repères dans ta fameuse boucle :
monindex = i