【问题标题】:Input Arithmetic Operators Only in Masked TextBox in C#仅在 C# 的 Masked TextBox 中输入算术运算符
【发布时间】:2014-03-17 05:34:07
【问题描述】:

我正在 c# 中以 windows 形式创建应用程序

我知道在屏蔽文本框中,我们可以限制输入的格式,还可以限制我们可以验证的输入类型,例如仅数字、仅字符、字母数字。 但现在我试图对屏蔽文本(或简单文本框)施加限制,以仅接受单个算术运算符(+ 或 - 或 * 或 /)。我在网上搜索过,但没有找到方法。请帮我解决这个问题。

【问题讨论】:

  • Winforms、Web 表单、WPF、GTK+、...?
  • @jdphenix 窗体

标签: c# winforms maskedtextbox


【解决方案1】:

我认为更简单的方法是将文本框属性中的最大长度字符限制为 1

在 TextChanged 事件中你可以写

private void textBox1_TextChanged(object sender, EventArgs e)
{
  if (textBox1.Text.Length > 0)
  {
    char[] SpecialChars = "+-*/".ToCharArray();
    int indexOf = textBox1.Text.IndexOfAny(SpecialChars);
    if (indexOf == -1)
     {
      textBox1.Text = string.Empty;
      MessageBox.Show("Enter Valid Character")
     }
   }
 }

【讨论】:

  • 因为它只接受单个字符,我认为蒙面文本框不是必需的,所以我在简单的文本框中做了
  • 您在代码中解释得很好,效果很好。我还需要另一个这个。我需要在输入输入时进行限制。我的意思是,当我在文本框中按任何算术运算符时,它会被输入,但是如果我按算术运算符以外的任何键,它不应该在文本框中输入。就像 00000 仅用于整数的掩码一样。有可能吗?
  • 由于只是单字符文本框,如果不是预期的字符,用户输入时会立即清除文本。
  • 哇!太好了,现在可以了。谢谢你帮助我。我已将您的答案标记为正确答案。
【解决方案2】:

使用普通的TextBoxMaskedTextBox 无法满足您的需求。在一个非常简单的表单示例中,在TextBox 上为KeyPress 使用这样的事件处理程序:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
  var accepted = new[] {'+', '-', '*', '/', (char)Keys.Back};
  if (!accepted.Intersect(new[] {e.KeyChar}).Any()) {
    e.Handled = true;
  }
}

并将TextBox.MaxLength 属性设置为1

【讨论】:

    猜你喜欢
    • 2012-10-10
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 2014-09-12
    相关资源
    最近更新 更多