Limiter masked textboox a certains caractere [Résolu]

Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
- - Dernière réponse : olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
- 6 mai 2008 à 10:59
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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
58
3
Merci
La MaskedTextBox n'est pas un Control très bien conçu, personnellement je ne l'ai presque jamais utilisé!
Cela dit, on peut lui associé des expressions régulières, donc ...

<hr />
-My Blog-

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Bidou
Messages postés
342
Date d'inscription
dimanche 26 janvier 2003
Dernière intervention
25 mars 2009
5
0
Merci
Tu peux controler les touches frappées dans ta textbox via l'evènement KeyPress
Commenter la réponse de bubbathemaster
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
3
0
Merci
C'est bien ce que je craignais !
Dans ce cas je considere que le maskedtextbox est completement idiot et inutile

Je vais reprendre une fonction que j'ai écrite il y a vingt ans pour controler des masque d'ecran en C et VB
et qui faisait bien plus que le malheureux  masketextbox actuel

A mon avis il on du confier le concept de cela a un ingénieur qui n'a jamais utilisé un clavier !
Commenter la réponse de olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
3
0
Merci
Salut Bidou

Ben non justement je croyais, mais on ne peut PAS lui associer des expressions régulieres
C'est encore plus mauvais que tu ne le pense
Commenter la réponse de olibara
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
58
0
Merci
Ha oui on dirait bien que tu as raison...
Le mieux c'est encore de faire une validation à la main (Validator pour le web, regex avec textbox pour les winForms)

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
0
Merci
tu peux toujours te servir de l'une de mes sources pour les valider : http://www.csharpfr.com/codes/WINDOWS-FORMS-VALIDATORS_43575.aspx

Sinon, je rejoins Bidou, ce contrôle est une pure d***e... impossible de saisir quelque chose correctement !

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
3
0
Merci
Merci a tous

J'ai aussi reçu une classe dérivée de TextBox (RegexTextBox) de Tomlev sur développez.com

Il a associé une regular expression sur TextBox je n'ai pas encore testé mais c'est en tout cas plus malin que l'original

    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");
            }
        }
    }
Commenter la réponse de olibara

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.