Limiter masked textboox a certains caractere [Résolu]

olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 5 mai 2008 à 20:33 - Dernière réponse : olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention
- 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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 5 mai 2008 à 22: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-

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

Commenter la réponse de cs_Bidou
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 5 mai 2008 à 21:09
0
Merci
Tu peux controler les touches frappées dans ta textbox via l'evènement KeyPress
Commenter la réponse de bubbathemaster
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 5 mai 2008 à 21:19
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
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 6 mai 2008 à 07:06
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 6 mai 2008 à 08:12
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
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 6 mai 2008 à 10:12
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
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 6 mai 2008 à 10:59
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.