如何防止有人在C#中的文本框中添加相同的字符?
好的,下面是场景。我正在构建一个计算器,我想阻止(计算器的)用户添加多个点(.),因为1.2.1显然不是实数,那么,我该怎么做才能在他们输入的文本框中只添加一个点呢?您可以使用如何防止有人在C#中的文本框中添加相同的字符?,c#,calculator,point,C#,Calculator,Point,好的,下面是场景。我正在构建一个计算器,我想阻止(计算器的)用户添加多个点(.),因为1.2.1显然不是实数,那么,我该怎么做才能在他们输入的文本框中只添加一个点呢?您可以使用TextChanged事件来验证用户输入正如Poma指出的,您可以监听TextChanged事件,并查看输入框中的内容。然后,您(基本上)有两个选择: 现场修复输入(即重置文本以确保没有错误 给出一些视觉反馈以表明有问题 我通常使用选项2,以指示错误I: 禁用任何输入选项(即OK按钮) 将文本字段的背景色更改为一些浅红色
TextChanged
事件来验证用户输入正如Poma指出的,您可以监听TextChanged事件,并查看输入框中的内容。然后,您(基本上)有两个选择:
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。任何一种方法都可以
--Dan或者你可以使用一个专门用于这种用途的蒙面盒子
这将不允许您拒绝字符。我如何使用它来防止用户输入与句号/点(.)相同的字符两次?WinForms?ASP.Net?Silverlight?WPF?MonoTouch?XNA?你还没有回答我的问题。你在用什么UI框架?还有,它叫C#。好主意,我总是忘了那个。请重新评论“你还没有回答我的问题。你在用什么UI框架?还有,它叫C#”