【问题标题】:How would I prevent someone from adding one of the same characters into a textbox in C#?如何防止某人将相同字符之一添加到 C# 中的文本框中?
【发布时间】:2011-04-05 23:48:00
【问题描述】:

好的,这是场景。我正在构建一个计算器,我想防止(计算器的)用户能够添加多个点(。),因为显然 1.2.1 不是实数,所以我该怎么做他们正在输入的文本框中只能添加一个点?

【问题讨论】:

  • WinForms? ASP.NET?银光? WPF?单触? XNA?
  • 你还没有回答我的问题。 你使用的是什么 UI 框架?另外,它叫做 C#。

标签: c# calculator point


【解决方案1】:

或者您可以使用专门用于此类目的的 MaskedEdit 框

link

【讨论】:

  • 好主意,我总是忘记那个
  • 请重新访问评论“您还没有回答我的问题。您使用的是什么 UI 框架?另外,它首先称为 C# :)
【解决方案2】:

正如 Poma 指出的那样,您可以监听 TextChanged 事件,并查看输入框中的内容。然后,您(基本上)有两个选择:

  1. 实时修复输入(即重置文本,以免出现错误
  2. 提供一些视觉反馈以表明有问题

我通常选择选项 2,以指示错误 I:

  1. 禁用任何输入选项(即确定按钮)
  2. 将文本字段的背景颜色更改为浅红色

如果您选择选项 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。无论哪种方式都可以。

-- 丹

【讨论】:

    【解决方案3】:

    您可以使用TextChanged 事件来验证用户输入

    【讨论】:

    • 这不会让你拒绝字符。
    • 我将如何使用它来防止用户输入相同的句号/点 (.) 字符两次?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多