IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Limiter certains caracteres dans masked textbox


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Limiter certains caracteres dans masked textbox
    Bonjour


    J'ai cherché mais sans succes

    Quelqu'un sait-il s'il est possible et comment d'utiliser un maskedtextbox pour limiter l'entrée a certain caracteres

    Exemple trivial :

    O ou N pour Oui / Non (Yes / No)

    J'ai lu et relu la doc et je n(ai rien vu qui permettait cela
    Si c'est possible c'est vraiment bien caché
    Si c'et pas possible c'est vraiment tres dommage et incompréhensible

    Mais dans les deux cas c'est dommage qu'une possibilité aussi triviale ne soit pas mise ern évidence

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    A priori c'est pas possible. Ce n'est pas vraiment à ça que ça sert, c'est juste pour faire un check basique sur le format de la chaîne. Mais comme tu dis, c'est trivial, tu peux donc faire ça toi-même
    Par exemple j'ai créé une classe RegexTextBox qui fait un peu la même chose qu'un MaskedTextBox, mais en utilisant une expression régulière pour valider l'entrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
        public class RegexTextBox : TextBox
        {
            public RegexTextBox()
            {
                regexPattern = ".*";
                regex = new Regex("^" + regexPattern + "$");
            }
     
            protected string regexPattern;
            protected Regex regex;
     
            public string RegexPattern
            {
                get { return regexPattern; }
                set
                {
                    if (value != regexPattern)
                    {
                        regexPattern = value;
                        regex = new Regex("^" + regexPattern + "$");
                    }
                }
            }
     
            protected override void OnKeyPress(KeyPressEventArgs e)
            {
                if (IsInputChar(e.KeyChar) && e.KeyChar >= (char)32)
                {
                    string newText = this.Text + e.KeyChar;
                    if (!regex.IsMatch(newText))
                    {
                        e.Handled = true;
                    }
                }
                base.OnKeyPress(e);
            }
     
            [Browsable(false)]
            public override bool Multiline
            {
                get
                {
                    return false;
                }
                set
                {
                    if (value)
                        throw new NotSupportedException("RegexTextBox cannot be multiline");
                }
            }
        }
    Evidemment c'est loin d'être parfait, mais c'est un début...

    Pour ton exemple il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regexTextBox1.RegexPattern = "[ON]?";
    (c'est à dire 0 ou 1 fois le caractère O ou N)

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci Tomlev

    Voilà qq chose d'intelligent !
    A mon avis ils on du donner la conception du maskedtexbox a un ingénieur qui n'a jammais vu un clavier !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Limitation de caractere dans un champ de saisie
    Par Invité dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/07/2009, 16h20
  2. [XL-2003] compteur de caracteres dans 2 textbox
    Par cimbra55 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/04/2009, 02h17
  3. [VB 2005] Enlever certains caractères dans une textbox
    Par BluesMusic dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/01/2008, 14h14
  4. remplacer des caracteres dans un textbox
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/12/2007, 14h26
  5. VB.net Ajout de caractere dans une textbox
    Par TIREUR dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/06/2006, 20h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo