Autoriser seulement les majuscules dans une textbox [Résolu]

CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 26 janv. 2013 à 00:28 - Dernière réponse : CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention
- 31 janv. 2013 à 21:33
Bonjour,
je voudrais n'autoriser que les majuscules lors de l'écriture de ma textbox.
J'ai réussi mais le soucis c'est que lorsque j'écris, l'écriture est marquée à l'envers. Exemple si j'écris "abc", le contenu de ma textbox va se transformer en "CBA".
TextBoxClé.Text = TextBoxClé.Text.ToUpper

Le problème vient du fait que je converti le contenu de ma textbox1 et que j'assigne ce nouveau contenu à ma texbox1 car quand je converti le contenu de ma texbox2 et que l'affiche à la textbox1 ça marche parfaitement.
Merci de votre aide !
Afficher la suite 

15 réponses

Répondre au sujet
Utilisateur anonyme - 27 janv. 2013 à 19:31
+3
Utile
Tiens, je viens de tomber sur une propriété particulière des TextBox qui pourra peut-être t'être utile dynamiquement :
textbox1.CharacterCasing = CharacterCasing.Upper

Ou à déterminer à la création dans la fenêtre des propriétés du composant.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 29 janv. 2013 à 18:59
+3
Utile
Salut banana32
Merci pour la piste du KeyValue, cela fonctionne parfaitement, j'ai donc résolu mon problème, ma textbox écrit tout le temps en majuscule, et tous les caractères sont bloqués même les lettres avec accent, je laisse le code pour les personnes qui viendront ici et sont intéressés.
PS : Il ne faut pas utiliser les valeur ASCII mais les valeurs clavier, pour le récupérer j'ai fais un petit code que j'ai mis en note.
PS2: Etant donné que toutes les valeurs du clavier sauf les lettres, sont bloquées, la touche retour ne marche pas, j'ai donc mit un textbox clear à la place car je n'ai pas réussi à faire le code pour supprimer que le dernier caractère. D'ailleurs, si tu as la solution banana32 je suis preneur ;)

    Private Sub TextBoxClé_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBoxClé.KeyPress
        '######## Optimisation du code, au lieu de mettre si caractère controle ... on bloque, on met si le caractère n'est pas une lettre, on bloque #####
        If Char.IsLetter(e.KeyChar) = False Then
            e.Handled = True
        End If

    End Sub

    Private Sub TextBoxClé_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBoxClé.KeyUp

        '############ RECUPERER LA VALEUR CLAVIER DU CARACTERE TAPPE ##########
        'Dim Valeur As Integer = e.KeyValue
        'MsgBox(Valeur)
        '#######################################################################


        If e.KeyValue = 50 Then
            TextBoxClé.Clear()
            MsgBox("Merci de ne pas mettre d'accents dans votre prénom ou nom !", MsgBoxStyle.Exclamation)
        End If

        If e.KeyValue = 220 Then
            TextBoxClé.Clear()
            MsgBox("Merci de ne pas mettre d'accents dans votre prénom ou nom !", MsgBoxStyle.Exclamation)
        End If

        If e.KeyValue = 192 Then
            TextBoxClé.Clear()
            MsgBox("Merci de ne pas mettre d'accents dans votre prénom ou nom !", MsgBoxStyle.Exclamation)
        End If

        If e.KeyValue = 221 Then
            TextBoxClé.Clear()
            MsgBox("Merci de ne pas mettre d'accents dans votre prénom ou nom !", MsgBoxStyle.Exclamation)
        End If

        If e.KeyValue = 55 Then
            TextBoxClé.Clear()
            MsgBox("Merci de ne pas mettre d'accents dans votre prénom ou nom !", MsgBoxStyle.Exclamation)
        End If

        If e.KeyValue = 57 Then
            TextBoxClé.Clear()
            MsgBox("Merci de ne pas mettre d'accents dans votre prénom ou nom !", MsgBoxStyle.Exclamation)
        End If

        If e.KeyValue = 48 Then
            TextBoxClé.Clear()
            MsgBox("Merci de ne pas mettre d'accents dans votre prénom ou nom !", MsgBoxStyle.Exclamation)
        End If

        If e.KeyValue = 8 Then
            TextBoxClé.Clear()
        End If

    End Sub

    Private Sub TextBoxClé_TextChanged(sender As Object, e As EventArgs) Handles TextBoxClé.TextChanged
        '######### Toutes les lettres tappées seront transformées en majuscule #########
        TextBoxClé.CharacterCasing = CharacterCasing.Upper
    End Sub
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de CLeBeR_FR
NHenry 14133 Messages postés vendredi 14 mars 2003Date d'inscription 22 avril 2018 Dernière intervention - 26 janv. 2013 à 01:18
0
Utile
Bonjour,

1) on évite les accents et caractères spéciaux dans les noms de contrôle/form/module/variable, cela cause parfois des soucis imprévus et limite l'internationalisation du code.
2) je ne vois pas pourquoi le texte s'inverse, tu ne nous montre pas tout le code, je pense
3) tu peux controler la saisie en cours avec l'event Change et KeyPress du contrôle.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry
Utilisateur anonyme - 26 janv. 2013 à 02:07
0
Utile
Bonjour,

Regarde la propriété RightToLeft de ton Textbox. Elle doit être à No
Commenter la réponse de Utilisateur anonyme
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 26 janv. 2013 à 05:59
0
Utile
Bonjour,
lors de l'écriture de ma textbox
.
donc en cours même de saisie.
Avec quel code et dans quel évènement ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 26 janv. 2013 à 17:14
0
Utile
Salut à tous !

@NHenry
Merci du conseil concernant les caractères spéciaux, j'en prends note pour la prochaine fois.
Voici mon code entier :
    Private Sub TextBoxClé_TextChanged(sender As Object, e As EventArgs) Handles TextBoxClé.TextChanged
        TextBoxClé.Text = TextBoxClé.Text.ToUpper
    End Sub


@cmarcotte
J'ai regardé la propriété, je l'ai mise à "Yes" mais c'est encore plus déstabilisant car le problème persiste mais en plus cette fois ci le code part de la droite.

@ucfoutu
Oui en cours même de saisie grâce à l’évènement TextChanged.
Commenter la réponse de CLeBeR_FR
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 26 janv. 2013 à 17:17
0
Utile
Regarde la propriété RightToLeft de ton Textbox. Elle doit être à No

@cmarcotte
J'ai regardé la propriété, je l'ai mise à "Yes" mais c'est encore plus déstabilisant

Sans commentaires.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Utilisateur anonyme - 26 janv. 2013 à 21:42
0
Utile
Bonjour,

Dans ce cas, le meilleur moyen pour suivre les 'opérations' c'est de placer des points d'arrêts (F9) et de faire avancer le code en pas à pas (F8) et d'observer quelles lignes sont exécutées et surtout quels événements sont exécutés et dans quel ordre. Promener la souris sur les variables pour observer les valeurs.
Commenter la réponse de Utilisateur anonyme
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 27 janv. 2013 à 19:32
0
Utile
Bonjour,
il se passe un phénomène très bizarre, lorsque j'exécute le programme en pas à pas, le problème n’apparaît pas ! La preuve en vidéo.
https://dl.dropbox.com/u/79764502/TextBox/TextBox.wmv
Commenter la réponse de CLeBeR_FR
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 27 janv. 2013 à 19:35
0
Utile
Oh merci ! ça marche !
Commenter la réponse de CLeBeR_FR
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 27 janv. 2013 à 20:23
0
Utile
Par contre j'ai juste une petite dernière question, dans ma textbox il faut absolument bloquer tous les caractères ( même les lettres accentuées ) sauf les lettres.
J'ai réussi à bloquer tous les caractères ( sauf les lettres accentuées )grâce au code suivant :

    Private Sub TextBoxClé_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBoxClé.KeyPress
        If Char.IsDigit(e.KeyChar) = True Then
            e.Handled = True
        End If

        If Char.IsControl(e.KeyChar) = True Then
            e.Handled = True
        End If

        If Char.IsHighSurrogate(e.KeyChar) = True Then
            e.Handled = True
        End If

        If Char.IsPunctuation(e.KeyChar) = True Then
            e.Handled = True
        End If

        If Char.IsSeparator(e.KeyChar) = True Then
            e.Handled = True
        End If

        If Char.IsSymbol(e.KeyChar) = True Then
            e.Handled = True
        End If

        If Char.IsWhiteSpace(e.KeyChar) = True Then
            e.Handled = True
        End If
    End Sub


Dois-je utiliser le code UTF-8 pour les bloquer ?
Merci.
Commenter la réponse de CLeBeR_FR
Utilisateur anonyme - 27 janv. 2013 à 21:33
0
Utile
Observe la table ASCII et déduis-en les caractères à éviter dans l'événement KeyUp (grâce à l'argument e et sa propriété KeyCode) de ton textbox.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 27 janv. 2013 à 21:35
0
Utile
Rectificatif: Grâce à la propriété KeyValue qui renvoie un Integer donc.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 29 janv. 2013 à 19:21
0
Utile
Un select case aurait été plus judicieux :

select case e.keyvalue
    case 50,220,92,48 'etc..
       MessageBox.Show("blabla")    (MsgBox obsolète)
       e.suppresskeypress = true
    case Else
       'code pour le reste des touches
  end select
Commenter la réponse de Utilisateur anonyme
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 31 janv. 2013 à 21:33
0
Utile
Ok j'ai pris ta solution. Sujet résolu !
Commenter la réponse de CLeBeR_FR

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.