Bonjour !

J'admet que mon titre de sujet n'est pas très clair, laissez-moi vous expliquer mon petit soucis.

J'ai une listbox avec la liste des clients d'une entreprise, au dessus de celle-ci se trouve un textbox de recherche. A chaque évenement keypress dans mon textbox, j'effectue une recherche de la chaine dans ma listbox et pointe sur le premier index contenant cette chaîne. C'est tout basique, voilà mon code sur l'évènement keypress :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
    Private Sub txtb_Search_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtb_Search.KeyPress
        lb_Clients.SelectedIndex = lb_Clients.FindString(txtb_Search.Text, 0)
        If txtb_Search.Text = "" Then
            lb_Clients.SelectedIndex = 0
        End If
    End Sub
J'ajoute juste une petite ligne forçant le programme à resélectionner le premier index de ma listbox lorsque le textbox (txtb_Search) est vide.

Seulement mon petit code fonctionne, mais avec un décalage. C'est à dir que si je recherche un Dunand il ne pointera pas tout de suite sur l'index de Dunand lorsque j'appuierai sur la touche d, mais uniquement lorsque j'aurai taper les touches du. Illustration :

-->

Ce n'est pas grave en sois, à la limite, l'utilisateur peut force la recherche en tapant sur Enter, mais je préfèrerais pouvoir mieux gérer cet évènement.

J'ai essayer d'utiliser l'évènement KeyDown mais celui-ci fonctionne plus ou moins de la même manière, si ce n'est qu'il hésite un peu. En tapant d il sélectionne Dunand pendant une mili-seconde, puis pointe à nouveau sur le premier index...

Une idée ?

Merci !