2010-11-26 31 views
2

Voici mon code:Avoir un MaskedTextBox accepter que des lettres

private void Form1_Load(object sender, EventArgs e) 
{ 
    maskedTextBox1.Mask = "*[L]"; 
    maskedTextBox1.MaskInputRejected += new MaskInputRejectedEventHandler(maskedTextBox1_MaskInputRejected); 
} 

Comment puis-je le mettre à accepter que des lettres, mais mais beaucoup l'utilisateur veut? Merci!

Répondre

6

Ce serait facile si les zones de texte masquées acceptaient l'expression régulière, mais malheureusement, ce n'est pas le cas.

One (mais pas très joli) comme vous pourriez le faire est d'utiliser la lettre en option ? masque et mettre dans le même montant que la longueur maximale vous permet dans la zone de texte, à savoir

maskedTextBox1.Mask = "????????????????????????????????......."; 

Sinon, vous pouvez utiliser votre propre validation au lieu d'un masque et d'utiliser une expression régulière comme si

void textbox1_Validating(object sender, CancelEventArgs e) 
{ 
    if (!System.Text.RegularExpressions.Regex.IsMatch(textbox1.Text, @"^[a-zA-Z]+$")) 
    { 
     MessageBox.Show("Please enter letters only"); 
    } 
} 

Ou encore une autre façon serait d'ignorer toutes les touches autres que celles des lettres en manipulant l'événement KeyPress, qui mon l'opinion serait la meilleure voie à suivre.

private void textbox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"^[a-zA-Z]+$")) 
      e.Handled = true; 
} 
+0

Oui, je trouve cela, mais je voulais éviter d'écrire cela. : P Merci! –

+0

Je vais juste créer une méthode d'aide. Merci! –

+2

'if (! System.Text.RegularExpressions.Regex.IsMatch (textbox1.Text, @" [a-zA-Z] + $ "))' ne fonctionnera pas dans l'événement KeyPress. utilisez 'e.KeyChar.ToString()' au lieu de 'textbox1.Text' – Shell

2

Si vous ne souhaitez que des lettres à inscrire, vous pouvez l'utiliser dans l'événement keyPress

if (!char.IsLetter(e.KeyChar) && !char.IsControl(e.KeyChar)) //The latter is for enabling control keys like CTRL and backspace 
{ 
    e.Handled = true; 
}