Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅在C中的屏蔽文本框中输入算术运算符#_C#_Winforms_Maskedtextbox - Fatal编程技术网

C# 仅在C中的屏蔽文本框中输入算术运算符#

C# 仅在C中的屏蔽文本框中输入算术运算符#,c#,winforms,maskedtextbox,C#,Winforms,Maskedtextbox,我正在用c语言在windows窗体中创建应用程序# 我知道在屏蔽文本框中,我们可以限制输入的格式,也可以限制我们可以验证的输入类型,如仅数字、仅字符、字母数字。 但现在我试图限制屏蔽文本(或简单文本框)只接受单个算术运算符(+或-或*或/)。我在网上搜索过,但没有找到办法。请帮助我解决这个问题。我认为更简单的方法是将文本框属性中的最大长度字符限制为1 在TextChanged事件中,您可以编写 private void textBox1_TextChanged(object sender, Ev

我正在用c语言在windows窗体中创建应用程序#

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

我认为更简单的方法是将文本框属性中的最大长度字符限制为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")
     }
   }
 }

使用常规的
文本框
MaskedTextBox
无法满足您的需要。在一个非常简单的表单示例中,对
文本框上的
按键
使用如下事件处理程序:

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

Winforms、web forms、WPF、GTK+,…?@jdpenix windows Form因为它只接受一个字符,所以我认为屏蔽文本框是不必要的,所以我在简单的文本框中完成了它。您在代码中对它进行了很好的解释,效果非常好。我还需要另一个。我需要在输入时进行限制。我的意思是,当我在文本框中按下任何算术运算符时,它被输入,但如果我按下算术运算符以外的任何键,它不应该在文本框中输入。就像仅用于整数的00000掩码一样。有可能吗?因为它只是一个单字符文本框,如果不是预期的字符,它会在用户输入后立即清除文本。哇!那太好了,现在它起作用了。谢谢你帮助我。我已把你的答案标为正确答案。