【发布时间】:2021-11-20 18:50:00
【问题描述】:
我是一名初学者程序员,我正在尝试修改以下代码,以便只允许 {'delete' , 'backspace' , one '.' ,输入开头的一个“-”号,文本框 C#/winforms 上的数字“0 到 9”}:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
(e.KeyChar != '.'))
{
e.Handled = true;
}
// only allow one decimal point
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
{
e.Handled = true;
}
}
请帮忙?
【问题讨论】:
-
这是可能的,但它确实是 AWFUL 的可用性。通常,您最好更多允许任何击键,在完成操作(按钮单击、页面提交等)时检查它,并仅使用 keypress 事件来显示即时反馈最终结果是否可以,不干扰用户。
-
即使代码看起来不太可读或不是最佳的,您也应该使用 OR 运算符检查键。如果您使用 AND 运算符,您的代码将检查是否满足所有条件。查看文档:docs.microsoft.com/de-de/dotnet/api/…
-
@JoelCoehoorn 我正在尽量减少要求我做这个限制的低学历木匠的打字错误,所以我为我的小工具中的每个文本框考虑了这种简单的方法,所以这对他们来说是可以接受的,对我作为初学者来说也很容易。
-
@LarsTech 我会搜索一下,尽量理解,谢谢建议