Арифметические операторы ввода только в замаскированном 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
,