Textbox sélectif

Contenu du snippet

Ceci est une source montrant
comment on peux faire des sélections
sur les caratères tapés dans un Textbox.
Dans la source le Textbox ne contiendra aucun 'a'
Mais on peux l'adapter pour ne mettre que des chiffres,
que des majuscules, ect...

Source / Exemple :


Public Class Form1

    Dim ok As Boolean = True ''Cette variable booléenne permet de faire que le code
    '' puisse changer le texte du Textbox1 sans que le code de la Sub 'lo' ne
    '' soit rapellée pendant qu'elle modifie le Text du textbox1

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

        '''''''''''''''''''''''''''''''''''''''''
        'If e.KeyChar = "a" Then e.Handled = True ''Cette ligne de code permet que 
        ''quand on tape un 'a', il ne se passe rien
        '''''''''''''''''''''''''''''''''''''''''

    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        If ok Then lo() '' On appelle la Sub 'lo'

    End Sub

    Sub lo()
        Dim laselect As Integer = TextBox1.SelectionStart ''Mémorise l'emplacement du cureseur
        '' pour le restituer à la fin de l'opération

        Dim letext As String = TextBox1.Text '' On mémorise le text du Textbox1
        ''Avant de l'effacer

        Dim oubli As Integer = TextBox1.Text.Length ''Ensuite on déclare 'oubli' afin de 
        '' sauvegarder la longueur du Textbox1.text puisque on va l'effacer entièrement

        ok = False ''Ici on met 'ok' à false afin que la Sub 'lo' ne soit pas rapellée
        '' pendant l'opération...

        TextBox1.Text = "" '' On efface le Textbox1 

        For i = 0 To oubli - 1 '' Ici on remplis le Textbox1 avec toutes les lettres contenues
            '' dans le Text du Textbox1 qui a été sauvegardé dans la variable 'letext'

            If letext(i) <> "a" Then ''Ici, pendant le remplissage du Textbox1,
                '' on met une condition afin de ne pas remplir le Textbox1
                '' si la lettre est un 'a'

                TextBox1.Text = TextBox1.Text & letext(i) ''Ici on met les caractères le uns après les autres
                ''Dans le Textbox
            Else
                If laselect < oubli Then laselect -= 1 '' Si on a sauté le caratère 'a', alors on réduit
                '' la position du curseur de 1, ceci évite que le curseur avance de
                '' 1 cran si on tapes 'a' au milieu du Textbox
            End If
        Next

        ok = True ''Maintenant que le Textbox est rempli, on remet 'ok' à True puisque on
        '' ne va plus changer la propriété text du textbox

        TextBox1.SelectionStart = laselect '' Ici on positionne le curseur à l'emplacement
        ''sauvegardé, sinon il revient à la position 1

    End Sub

End Class

Conclusion :


J'ai fait ce code suite à la source
de Sinsitrus pour voir si il était possible
de faire ce type de programme sans utiliser
les Apis de Windows.
Peut être qu'il est plus judicieux
d'utiliser les Apis pour faire
ça, j'ai remarqué aussi que il était
possible qu'un 'a' apparaisse avant
que le code ai fini, cela peux
peut être remédié en activant la ligne
que j'ai mise dans l'évenement KeyPress.

A voir également

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.