Введите только цифры 1 или 2 - PullRequest
0 голосов
/ 14 мая 2019

Как сделать так, чтобы в текстовое поле можно было вводить только цифры 1 или 2?И вы также можете использовать клавишу Backspace.Максимальная длина символов текстового поля - один.Я умею вводить только цифры:

char number = e.KeyChar;
if (!Char.IsDigit(number) && number != 8)
{
e.Handled = true;
}

Ответы [ 5 ]

1 голос
/ 14 мая 2019

Использование SuppressKeyPress свойство

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        /*
         * 8:   backspace
         * 49:  1
         * 50:  2
         */

        int[] validKeys = {8, 49, 50};
        if (!validKeys.Contains(e.KeyValue))
            e.SuppressKeyPress = true;

    }
1 голос
/ 14 мая 2019

Я бы использовал элемент управления NumericUpDown вместо TextBox.Там вы можете установить min на 1, max на 2, и ваш пользователь может вводить цифры или использовать клавиши со стрелками для увеличения / уменьшения.

Если вы ДОЛЖНЫ использовать TextBox, установите для свойства MaxLength значение 1, идобавить событие KeyDown и обработчик.В обработчике вы можете сделать:

if(!(e.KeyCode == Keys.D1 || e.KeyCode == Keys.D2 || E.KeyCode == Keys.Delete)) 
{
    // Of course, you can add even more keys up there. For example, you might add Keys.Numpad1 etc...
    e.handled = true;
}

Итак, для TextBox вы уже поступили правильно, в основном.

1 голос
/ 14 мая 2019
char number = e.KeyChar;
if (number != '1' && number != '2' && number != '\b')
{
    e.Handled = true;
}

или просто

e.Handled = e.KeyChar != '1' && e.KeyChar != '2' && e.KeyChar != '\b';

или для большей выразительности

private static readonly char[] allowedChars = { '1', '2', '\b' };
// ...
e.Handled = !allowedChars.Contains(e.KeyChar);
0 голосов
/ 14 мая 2019

Все, что вам нужно, это использовать RegularExpressions, и вы можете проверить любой ввод с выражениями.

Я думаю, вы должны посетить этот вопрос: разрешать только определенные символы в текстовом поле

0 голосов
/ 14 мая 2019

Полагаю, все, что вам нужно, это что-то вроде следующего в событии TextChanged текстового поля?

if (textbox.text != "1" && textbox.text != "2")
{
    textbox.text = string.empty;
}

Я не уверен, что означает number != 8 в вашем вопросе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...