Voici un control ComboBox classique mais avec l'implémentation de la technologie de la saisie semi-automatique.
Trop facile avec vb.net de faire des contrôle comme ça en quelques lignes de code quand je pense qu'en VB6 il faudrais 65465454 lignes de code non je rigole mais bcp plus ça c'est sur :)
Dans le zip la Dll avec la source, et le Projet TEST :o)
Source / Exemple :
Extrait du code :
Public Class Hst_ComboSense
Inherits System.Windows.Forms.ComboBox
Private mHstIntelliSense As Boolean = True
Protected Overrides Sub OnKeyUp(ByVal e As KeyEventArgs)
If mHstIntelliSense = True Then
If e.Shift = True Then
HstSaisieAuto(e.KeyCode, True)
Else
HstSaisieAuto(e.KeyCode, False)
End If
End If
End Sub
<Category("Behavior"), Description("Technologie Hostonet IntelliSense (Saisie semi-automatique)")> _
Public Property HstIntelliSense() As Boolean
Get
Return mHstIntelliSense
End Get
Set(ByVal Value As Boolean)
If Value.Equals(mHstIntelliSense) Then Return
mHstIntelliSense = Value
If Not DesignMode AndAlso mHstIntelliSense Then Invalidate()
End Set
End Property
Private Sub HstSaisieAuto(ByVal KeyPress As Keys, ByVal ShiftPressed As Boolean)
Dim Nbr_Choix As Integer
Dim LongeurFrappe As Integer
'Analyse des touches relachée
'Si corresponds pas à une valeur entre A et Z ainsi que 0 et 9 alors on annule la
'procédure , si elle corresponds alors on continue
If Not ( _
(KeyPress >= Keys.A And KeyPress <= Keys.Z) Or _
(KeyPress >= Keys.NumPad0 And KeyPress <= Keys.NumPad9) Or _
(ShiftPressed = True And (KeyPress >= 48 And KeyPress <= 58))) _
Then
Exit Sub ' On sort de la procédure pas la bonne touche relachée
Else
' Mybase peux être remplacer par ME qui désigne le control en lui même
LongeurFrappe = Len(MyBase.Text)
If Len(MyBase.Text) > 0 Then
If Not MyBase.FindString(MyBase.Text) = -1 Then
MyBase.Text = MyBase.Items(MyBase.FindString(MyBase.Text)).ToString
MyBase.SelectionStart = LongeurFrappe
MyBase.SelectionLength = Len(Me.Text) - LongeurFrappe
End If
End If
End If
End Sub
End Class
Conclusion :
Voilà c'est mon premier contrôle alors soyez sympa merci :)
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.