Bonjour à tous,
qui n'a pas déjà été frustré par les combos sous VB, car on ne peut pas taper quelques lettres pour sélectionner automatiquement le premier élément de la liste qui correspond. Comme sous access quoi !
Ce code n'est pas de moi à l'origine (
http://www.vbfrance.com/article.aspx?ID=4015), mais je l'ai adapté à VB .NET car il est vraiment trop pratique (merci encore à DeathAngel pour la source VB 6).
J'espère qu'il aidera des programmeur en herbe comme moi.
@++
Source / Exemple :
' "" REMARQUE A SUPPRIMER
' "" Cette procédure est à appeler sur le KeyUp de la ComboBox, comme suit
If (e.KeyValue() >= Keys.A And e.KeyValue() <= Keys.Z) Then
AutoSelection(Me.CBox.Text, Me.CBox)
End If
' "" FIN REMARQUE
Sub AutoSelection(ByVal rstrValeurSaisie As String, ByVal rctlCombo As ComboBox)
' "" La fonction complète automatiquement la saisie en fonction de la liste du combobox
Dim strTemp As String
Dim i As Integer
Dim n As Integer
Dim intLongueur As Integer
On Error GoTo AutoSelection_Err
n = rctlCombo.Items.Count - 1
intLongueur = Len(rstrValeurSaisie)
With rctlCombo
For i = 0 To n
If StrComp(Microsoft.VisualBasic.Left(.Items.Item(i), intLongueur), rstrValeurSaisie, vbTextCompare) = 0 Then
' "" On a trouvé un élément qui commence comme la valeur saisie
' "" on le sélectionne
.SelectedIndex = i
' "" On surligne la fin du mot
.SelectionStart = intLongueur
.SelectionLength = Len(.Text) - intLongueur
Exit For
End If
Next i
End With
AutoSelection_End:
Exit Sub
AutoSelection_Err:
MsgBox(Err.Number & " : " & Err.Description)
Resume AutoSelection_End
Resume
End Sub
Conclusion :
d'autres tests sur les e.KeyValue() sont possibles mais pas traités ici.
Si vous avez des questions, vous connaissez la musique.
Merci de laisser des commentaires :)
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.