Арифметические операторы ввода только в замаскированном TextBox в C#

Я создаю приложение в форме Windows в C#

Я знаю, что в замаскированном текстовом поле мы можем ограничить формат ввода, а также ограничить тип ввода, который мы можем проверять только как числа, только символы, буквенно-цифровые символы. Но теперь я пытаюсь установить ограничение на замаскированный текст (или простое текстовое поле), чтобы принимать только один арифметический оператор (+ или - или * или /). Я искал в Интернете, но не нашел пути. Пожалуйста, помогите мне решить эту проблему.

2 ответа

Решение

Я думаю, что проще было бы ограничить максимальную длину символов до 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")
     }
   }
 }

Используйте регулярный TextBox, MaskedTextBox не будет отвечать вашим потребностям. В очень простом примере формы используйте такой обработчик событий для KeyPress на TextBox:

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,

Другие вопросы по тегам