如何让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
事件对TextBox
void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back);
}
另外说允许退格键的情况下,要删除一些文本尝试,这应该完全适合你的工作
编辑
上述代码不适用于粘贴在我认为必须使用TextChanged
事件的字段中,但是如果您必须删除不正确的字符或突出显示它并将光标置于光标处以供用户进行更正或者,也许您可以在用户输入完整文本并关闭控件后进行验证。
这一个很好,但它不会允许我粘贴应该通过验证的文本。 –
最简单的方法是处理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;
}
这是一个免费的正则表达式版本,如果你喜欢。它会使文本框在输入错误时闪烁。 请注意,它似乎也支持粘贴操作。
先生,这是伟大的,但你可以告诉我deatail如何停止键入automaticallu它只是如果循环检查,但如何停止键入? 和约lambda表达式? textBox1.Text.All(chr => char.IsLetter(chr))这是什么。意思是如何工作,如果你可以 –
嘿!那么它做了什么,以便将输入中的前一个文本存储在oldText变量中。然后在文本框的后续更改中逐字符检查,如果该字符不是字母,则返回旧文本。如果是 - 将旧文本设置为与当前(新)文本框输入相同。 所以如果你有一个有效的输入 - oldText得到的TextBox值,如果你有无效的输出 - 它的工作方式相反。还有一些GUI造型有助于可视化是否有错误。希望这可以帮助。 –
因此,即使一个字符不是字母,textBox2.Text.All()lambda也会返回false。如果全部都是字母 - 它会返回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");
}
请尝试在Text_KeyPress事件这个
编写代码为
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsLetter(e.KeyChar))
{
e.Handled = true;
}
}
private void textbox1_KeyDown_1(object sender, KeyEventArgs e)
{
if (e.Key >= Key.A && e.Key <= Key.Z)
{
}
else
{
e.Handled = true;
}
}
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar >= '0' && e.KeyChar <= '9')
e.Handled = true;
else
e.Handled = false;
}
请包括解释为什么您的答案将工作以及如何将文本框连接到您的活动。 – Vulcronos
这一个是工作绝对没问题......
private void manufacturerOrSupplierTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsControl(e.KeyChar) || char.IsLetter(e.KeyChar))
{
return;
}
e.Handled = true;
}
感谢您的IsControl检查。 –
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");
}
}
更好地解释你的解决方案 –
尝试这个
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");
}
这里的时间尝试下面的代码,警报我的解决方案,它的工作原理按计划:
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
- 1. 如何使文本框只接受字母字符
- 2. 如何让文本框只接受数字字符?
- 3. 如何创建只接受数字的文本框和只接受WPF中的字母的文本框?
- 4. 如何使文本框数组只接受特定的字母?
- 5. Grails:我如何让g:textfield只接受数字或只接受字母?
- 6. 只接受在文本框字母和数字使用javascript
- 7. VB.NET - 如何让文本框只接受每个按键一个字符?
- 8. 如何强制文本框只接受字符串
- 9. 让UITextField只接受Swift中的小字母字母?
- 10. jQuery验证只接受文本框中的三个字母
- 11. 只接受字母使用jquery掩码的文本框
- 12. 屏蔽文本框只接受字母asp.net
- 13. 只接受文本框中的数字
- 14. 文本框PreviewTextInput - 只接受数字和“:”
- 15. 如何让textfield只接受LWUIT中的字母?
- 16. 如何让文本框只显示大写字母?
- 17. 节点如何让套接字只接受本地连接?
- 18. 文本框只有字母,数字和 -
- 19. 如何限制一个文本框只接受使用JavaScript的10个字母字符?
- 20. JQuery MVC - 接受字母和数字的蒙面文本框
- 21. 当第一个字母是字母数字时接受文本框的值
- 22. asp文本框只接受字符在IE8
- 23. 获取文本框只接受vb.net中的字符
- 24. 接受在文本框中只有字符输入
- 25. 如何使文本框只接受基于条件的数字?
- 26. 如何创建只接受字母数字字符的正则表达式?
- 27. 如何让文本框只接受有效的电子邮件?
- 28. 正则表达式只接受几个字母字符
- 29. jQuery验证插件:只接受字母字符?
- 30. 如何确保文本框只接受整数(而不是字符串)
似乎不能很好地工作。如果我添加一个字母,然后添加一个数字/空格/不管它会让我走,因为我满足正则表达式(以字母开头)。 –
@favoretti现在的代码工作正常,但是如果我键入第一个字符的整数,并且当我按退格键删除时,会发生异常。代码适用于数字,它会在我键入数字时弹出消息。但是当我试图用退格清除时,它给了我错误StartIndex不能小于零,参数名称startIndex。如何处理这个? – chathwind