La première lettre en majuscule [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
23 février 2010
-
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
-
bonsoir,je veux que la première lettre dans un champ soit en majuscule,même si l'utilisateur écrit un mot en minuscule la première lettre se transférer automatiquement en majuscule,j'ai essayé truc avec substr mais sa n'a pas marché!!


merci pour votre aide

17 réponses

Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
6
Bonjour.
Pourquoi ne pas utiliser l'évènement TextChanged du TextBox.
Comme ça :

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim txtBox As TextBox = DirectCast(sender, TextBox)
        If txtBox.Text.Length = 0 Then Return
        With txtBox
            Dim debutSelection As Integer = .SelectionStart
            Dim longueurSelection As Integer = .SelectionLength
            .Text = .Text.Substring(0, 1).ToUpper + .Text.Substring(1).ToLower
            .SelectionStart = debutSelection
            .SelectionLength = longueurSelection
        End With
    End Sub
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
10
Bonjour,

Je ne connais pas .NET, mais regarde dans ton aide du côté de la fonction StrConv() son équivalent en VB6, tu devrais trouver ton bonheur.

Au fait quel rapport avec SQL ???

Et regarde aussi ton aide sur SubStr(), tu verras que tu ne risquais que cela marche avec elle.


Calade
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
certains te parleront peut etre de strconv et propercase... mais ce serait alors du VB6 utilisé sous .Net

http://www.vbdotnetheaven.com/UploadFile/jmouchett/ProperCaseVBNET03162009155416PM/ProperCaseVBNET.aspx

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bonjour,

Je crois tout simplement que la "chose" peut se faire au moment même de la saisie ...
Je veux bien qu'on me coupe la tête si la textbox de VB.Net ne connait pas d'évènement KeyPress (ou équivalent VB.Net) pour y parvenir à l'aide de la fonction Ucase (ou de son équivalent VB.Net), à n'appliquer que sur la 1ère lettre (selstart ou son équivalent VB.Net) !

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Perso, je sais que je n'aime pas qu'on me chiffonne ma saisie. A la perte de focus, ok, mais a la saisie, moyen.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
6
Bonjour,
en effet, je préfère le contrôle au cours du "validating".
On peut utiliser la fonction suivante :
    Public Function EpureNom(ByVal ctrlTbx As TextBox, ByVal nomEntre As String) As String

        '*** Utilisation de "Substring" qui permet de récupérer une sous-chaîne de cette instance.
        '    La sous-chaîne démarre à une position de caractère spécifiée et a une longueur définie.
        '    La sous-chaîne démarre à une position de caractère spécifiée.

        nomEntre = nomEntre.Substring(0, 1).ToUpper(Globalization.CultureInfo.CurrentCulture) & _
                   nomEntre.Substring(1).ToLower(Globalization.CultureInfo.CurrentCulture)
        Return nomEntre

    End Function


et la mettre en oeuvre, par exemple dans un Textbox, comme suit :
    Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) _
    Handles TextBox1.Validating
        TextBox1.Text = EpureNom(TextBox1, TextBox1.Text)
    End Sub
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
a quoi sert de donner Textbox1 en paramètre ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
6
Dans le cas présent : à rien.
Ce bout de code est issu d'une fonction plus vaste qui gère les entrées incongrues, les espaces de trop, qui permet aussi de mettre une majuscule au début de chaque mot d'un nom composé etc.
Et aussi de gérer le TextBox en question depuis la fonction, genre :
            ctrlTbx.Text = ""
            ctrlTbx.Focus()
            Return ""
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
pour ne pas faire la modification en live.


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bonjour, mdevaux62

Pas vraiment une bonne idée . Cet évènement interviendra en effet :
- à chaque frappe d'une touche
- chaque fois, en plus, que le texte sera modifié par l'intervention précédente de l'évènemeznt


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
6
Et pourtant... ça marche !
Comme quoi...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bien évidemment, que "ça marche" (encore heureux !)
C'est tout simplement à éviter (double intervention inutile de l'évènement presque à tous les coups). Tu sais ? Il est parfaitement possible également ("ça marche" aussi) de se rendre de paris à Lyon en passant par Amsterdam !

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
6
Pas sûr non plus que de multiplier les tests ne soit pas au final plus long que deux appels au même évènement.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
n'importe comment, pas utile de faire cela en live ^^

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
au fait, que pense tu des prénoms composés ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
ucfoutu : ton argument est valable en VB6, dans certains controles, mais là, textchanged ne se déclanche que si le text a changé.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
6
Pour les prénoms composés, j'aurais bien une idée aussi mais bon, comme c'est basé sur le même principe, je passe... ou plutôt je laisse à la personne intéressée le soin de trouver sa solution.

Libre après à chacun de trouver les solutions adéquates pour résoudre un problème pourvu que ça fonctionne de façon transparente pour l'utilisateur et que le code ne soit pas inutilement alourdi.