Dll combosense , le combobox à saisie semi-automatique parfait !

Soyez le premier à donner votre avis sur cette source.

Vue 15 138 fois - Téléchargée 1 173 fois

Description

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 :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Nico52
Messages postés
35
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
11 mai 2007

Faux en VB6 C'est pas plus long !!

Static NoSelectText As String ' texte tapé par l'utilisateur
Dim ia As Long ' compteur de boucle
Const RGBerror = 255 ' couleur du fond en cas d'erreur


With TxtClient '<== SEULE LIGNE A MODIFIER

' touche que l'on ne doit pas gérer dans cette procedure
If KeyCode = vbKeyUp Then Exit Sub ' utilisé par VB
If KeyCode = vbKeyDown Then Exit Sub ' utilisé par vb
If KeyCode = vbKeyLeft Then Exit Sub ' pour se déplacer
If KeyCode = vbKeyRight Then Exit Sub ' pour se déplacer

' action spéciale pour la touche BACK
If KeyCode <> vbKeyBack Then
NoSelectText = Mid(.Text, 1, Len(.Text) - .SelLength)
Else
If NoSelectText <> "" Then
NoSelectText = Mid(NoSelectText, 1, Len(NoSelectText) - 1)
End If
End If

' recherche de la correspondance
For ia = 0 To .ListCount - 1
If UCase(NoSelectText) = UCase(Mid(.List(ia), 1, Len(NoSelectText))) Then
.ListIndex = ia
Exit For
End If
Next

' selection de la partie que l'on a rajouté automatiquement
.SelStart = Len(NoSelectText)
.SelLength = Len(.Text)
End With
rapatonilabo
Messages postés
1
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
19 avril 2006

Bonjour à tous!

Une petite question idiote de novice en la matière:
Comment est ce que je peux utiliser ce control combobox sur mon classeur excel????? Quels fichiers utiliser parmis la multitude que l'on trouve dans le fichier .zip???
J'attends avec impatience votre réponse ô maitres de la programmation car ce code m'intéresse vraiment bcp!!!

Merci
cs_Nonos
Messages postés
4
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
4 février 2006

GOTO --> .NET2
AutoCompleteMode (Suggest)
capuccino_fr
Messages postés
113
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
11 février 2008

nickel ;) 8/10
ricomiracle
Messages postés
195
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
30 novembre 2009

Merci pour ta source...
Moi je cherche à réaliser avec un contrôle combobox une sorte de saisie semi-auto pointée. Je m'explique à la manière de visual studio, lorsque je tape la touche '.' la liste se déroule si le mot avant le point est reconnu comme ayant des attributs. Vous voyez ce que je veut dire...?
Il faut donc déplacer le combo à la suite du point (ou en dessous du mot taper)
Si il y en a qui on déja vu ça ou bien qui ont des idées, elles sont les bienvenues... Meric
Et l'option AutoCompletition existe ou pas alors?

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.