好的,这是场景。我正在构建一个计算器,我想防止(计算器的)用户能够添加多个点(。),因为显然 1.2.1 不是实数,所以我该怎么做他们正在输入的文本框中只能添加一个点?
问问题
184 次
3 回答
2
或者您可以使用专门用于此类目的的 MaskedEdit 框
于 2011-04-06T00:07:50.203 回答
1
正如 Poma 指出的那样,您可以监听 TextChanged 事件,并查看输入框中的内容。然后,您(基本上)有两种选择:
- 实时修复输入(即重置文本,以免出现错误
- 提供一些视觉反馈以表明有问题
我通常选择选项 2,以指示错误 I:
- 禁用任何输入选项(即确定按钮)
- 将文本字段的背景颜色更改为一些浅红色
如果您选择选项 1,请小心,因为以编程方式更改文本也会生成文本更改事件。一种解决方案是设置一个布尔标志,即。
private bool changingText = false;
private void myTextBox_textChanged(...)
{
if(changingText)
return;
fixErrors();
}
private void fixErrors()
{
// Before changing myTextBox.Text, set the flag
changingText = true;
myTextBox.Text = ...
changingText = false;
}
还有其他选择,这些只是最常见的。
编辑:
另一个可能更好的解决方案是处理文本框的 OnKeyDown,如果键不是您想要的 - 只需将事件的 Handled 属性设置为 true。无论哪种方式都会奏效。
——丹
于 2011-04-05T23:59:34.887 回答
0
您可以使用TextChanged
事件来验证用户输入
于 2011-04-05T23:49:45.647 回答