【发布时间】:2019-05-14 09:52:59
【问题描述】:
如何才能使只有数字 1 或 2 可以输入到文本框中?您还可以使用 Backspace 键。文本框字符的最大长度为 1。 我知道如何只输入数字:
char number = e.KeyChar;
if (!Char.IsDigit(number) && number != 8)
{
e.Handled = true;
}
【问题讨论】:
如何才能使只有数字 1 或 2 可以输入到文本框中?您还可以使用 Backspace 键。文本框字符的最大长度为 1。 我知道如何只输入数字:
char number = e.KeyChar;
if (!Char.IsDigit(number) && number != 8)
{
e.Handled = true;
}
【问题讨论】:
您只需要使用正则表达式,您就可以使用表达式检查任何输入。
我认为你应该访问这个问题: Only allow specific characters in textbox
【讨论】:
char number = e.KeyChar;
if (number != '1' && number != '2' && number != '\b')
{
e.Handled = true;
}
或者只是
e.Handled = e.KeyChar != '1' && e.KeyChar != '2' && e.KeyChar != '\b';
或者为了更多的表现力
private static readonly char[] allowedChars = { '1', '2', '\b' };
// ...
e.Handled = !allowedChars.Contains(e.KeyChar);
【讨论】:
我会使用 NumericUpDown 控件而不是 TextBox。在那里您可以将最小值设置为 1,最大值设置为 2,并且您的用户可以输入数字或使用箭头键来增加/减少。
如果您必须使用 TextBox,则将其 MaxLength 属性设置为 1,并添加 KeyDown 事件和处理程序。在处理程序中你可以这样做:
if(!(e.KeyCode == Keys.D1 || e.KeyCode == Keys.D2 || E.KeyCode == Keys.Delete))
{
// Of course, you can add even more keys up there. For example, you might add Keys.Numpad1 etc...
e.handled = true;
}
所以,对于 TextBox,您基本上已经做了正确的事情。
【讨论】:
使用SuppressKeyPress 属性
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
/*
* 8: backspace
* 49: 1
* 50: 2
*/
int[] validKeys = {8, 49, 50};
if (!validKeys.Contains(e.KeyValue))
e.SuppressKeyPress = true;
}
【讨论】:
我假设您需要的只是文本框的 TextChanged 事件中的以下内容?
if (textbox.text != "1" && textbox.text != "2")
{
textbox.text = string.empty;
}
我不确定您的问题中 number != 8 的用途是什么?
【讨论】: