2013-04-27 56 views
2

嗨我想设置我的文本框只能用字母我已经尝试了下面的代码,它的键盘keys.but但工作正常,但如果我按Numpad键数字它接受数字可以任何人都请帮助我,非常感谢。验证在C#中的文本框.net

bool isvalid = true; 

    private void textBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if ((e.KeyValue <65 || e.KeyValue > 90) && (e.KeyValue<97||e.KeyValue>122) e.KeyValue != 8)) 
     { 
      isvalid = false; 
      MessageBox.Show("only alphabets"); 

     } 
     else 
     { 
      isvalid = true; 

     } 
    } 

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (isvalid == false) 
     { 
      e.Handled = true; 
     } 
     else 
     { 
      e.Handled = false; 
     } 

    } 

回答

3

使用Regex.IsMatch财产。

可以使用下面的代码:

private void txtAlphaOnly_TextChanged(object sender, EventArgs e) 
{ 
    if (System.Text.RegularExpressions.Regex.IsMatch("^[a-zA-Z]", txtAlphaOnly.Text)) 
    { 
     MessageBox.Show("Alphabets Only Allowed");    
    } 
} 

MSDN:

http://msdn.microsoft.com/en-IN/library/system.text.regularexpressions.regex.ismatch.aspx

希望它有帮助。

+1

这比keypress上的验证好得多,因为它允许复制和粘贴等。 – rocky 2013-04-27 08:57:14

+0

using System.Text.RegularExpressions; 命名空间windowsDemo { 公共部分类TextBox1的:形式 { 公共TextBox1中() { 的InitializeComponent(); } 私人无效textBox2_TextChanged(对象发件人,EventArgs的) { 如果(System.Text.RegularExpressions.Regex.IsMatch( “^ [A-ZA-Z]”,textBox2.Text)) { 的MessageBox。显示(“仅允许字母”); } } } }我尝试了下面的代码,正如你所说的,但它仍然接受数字和键盘数字。 – user2326333 2013-04-28 14:56:24

1

在KeyDown事件中,您将在e.KeyValue上得到的是键盘上的密钥代码而非字符,请参阅Keys Enumeration。这种情况对于A-Z和a-z是正确的。

(e.KeyValue >= Keys.A && e.KeyValue <= Keys.Z)