如何使TextBox只接受字母字符?

如何使TextBox仅接受带空格的字母字符?

您可以使用以下代码段:

 private void textBox1_TextChanged(object sender, EventArgs e) { if (!System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "^[a-zA-Z ]")) { MessageBox.Show("This textbox accepts only alphabetical characters"); textBox1.Text.Remove(textBox1.Text.Length - 1); } } 

您可以尝试处理文本框的KeyPress事件

 void textBox1_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back); } 

另外说如果你想删除一些文本允许退格,这对你来说应该是完美的

编辑

上面的代码不适用于我相信你将不得不使用TextChanged事件的字段中的粘贴,但是当你必须删除不正确的字符或突出显示它并为用户放置光标时会更复杂一些进行更正或者也许您可以在用户输入完整文本并关闭控件后进行validation。

 private void textbox1_KeyDown_1(object sender, KeyEventArgs e) { if (e.Key >= Key.A && e.Key <= Key.Z) { } else { e.Handled = true; } } 

最简单的方法是处理TextChangedEvent并检查输入的内容:

 string oldText = string.Empty; private void textBox2_TextChanged(object sender, EventArgs e) { if (textBox2.Text.All(chr => char.IsLetter(chr))) { oldText = textBox2.Text; textBox2.Text = oldText; textBox2.BackColor = System.Drawing.Color.White; textBox2.ForeColor = System.Drawing.Color.Black; } else { textBox2.Text = oldText; textBox2.BackColor = System.Drawing.Color.Red; textBox2.ForeColor = System.Drawing.Color.White; } textBox2.SelectionStart = textBox2.Text.Length; } 

如果您愿意,这是一个免费的正则表达式版本。 它会使输入错误的文本框闪烁。 请注意,它似乎也支持粘贴操作。

将Text_KeyPress事件中的代码写为

  private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsLetter(e.KeyChar)) { e.Handled = true; } } 
  if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "^[a-zA-Z]+$")) { } else { textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1); MessageBox.Show("Enter only Alphabets"); } 

请试试这个

这个工作绝对正常……

  private void manufacturerOrSupplierTextBox_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsControl(e.KeyChar) || char.IsLetter(e.KeyChar)) { return; } e.Handled = true; } 

此解决方案使用正则表达式,不允许将无效字符粘贴到文本框中并保持光标位置。

 using System.Text.RegularExpressions; int CursorWas; string WhatItWas; private void textBox1_Enter(object sender, EventArgs e) { WhatItWas = textBox1.Text; } private void textBox1_TextChanged(object sender, EventArgs e) { if (Regex.IsMatch(textBox1.Text, "^[a-zA-Z ]*$")) { WhatItWas = textBox1.Text; } else { CursorWas = textBox1.SelectionStart == 0 ? 0 : textBox1.SelectionStart - 1; textBox1.Text = WhatItWas; textBox1.SelectionStart = CursorWas; } } 

注意:textBox1_TextChanged递归调用。

 private void textBox2_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar >= '0' && e.KeyChar <= '9') e.Handled = true; else e.Handled = false; } 

试试这个

  private void tbCustomerName_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back||e.KeyChar==(char)Keys.Space); } 

它也允许空格

您可以尝试按下按键事件时提醒的代码

 private void tbOwnerName_KeyPress(object sender, KeyPressEventArgs e) { //===================to accept only charactrs & space/backspace============================================= if (e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space)) { e.Handled = true; base.OnKeyPress(e); MessageBox.Show("enter characters only"); } 
 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char.IsLetter(e.KeyChar) && (e.KeyChar !='.')) { e.Handled = true; MessageBox.Show("Only Alphabets"); } } 

这是我的解决方案,它按计划运行:

 string errmsg = "ERROR : Wrong input"; ErrorLbl.Text = errmsg; if (e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space)) { ErrorLbl.Text = "ERROR : Wrong input"; } else ErrorLbl.Text = string.Empty; if (ErrorLbl.Text == errmsg) { Nametxt.Text = string.Empty; } 

在文本框的KeyPress事件中尝试以下代码

 if (char.IsLetter(e.KeyChar) == false & Convert.ToString(e.KeyChar) != Microsoft.VisualBasic.Constants.vbBack) e.Handled = true