Ограничение пользователей на ввод только цифр в приложении C # windows - PullRequest
8 голосов
/ 21 декабря 2011

Я пытался использовать этот код для ограничения только чисел. Он вводит только цифры и не вводит их, когда мы пытаемся вводить символы или любые другие элементы управления, даже если он также не вводит пробел.как предотвратить возврат к нему.

private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e)
{
     if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "\\d+"))
          e.Handled = true;
}

Ответы [ 6 ]

28 голосов
/ 21 декабря 2011

Вам не нужно использовать RegEx для проверки на цифры:

private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e)
{
     if (!Char.IsDigit(e.KeyChar))
          e.Handled = true;
}

Чтобы разрешить возврат:

private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e)
{
     if (!(Char.IsDigit(e.KeyChar) || (e.KeyChar == (char)Keys.Back)))
          e.Handled = true;
}

Если вы хотите добавить другие допустимые ключи, посмотрите перечисление Keys и используйте описанный выше подход.

8 голосов
/ 02 февраля 2013

Чтобы разрешить только цифры в текстовом поле в приложении Windows, используйте

private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e)
{
     if (!(Char.IsDigit(e.KeyChar) || (e.KeyChar == (char)Keys.Back)))
          e.Handled = true;
}

Этот пример кода позволит вводить цифры и пробел, чтобы удалить предыдущий введенный текст.

6 голосов
/ 21 декабря 2011

Используйте метод Char.IsDigit (String, Int32) и проверьте NumericTextbox от Microsoft

MSDN Как создать числовое текстовое поле

5 голосов
/ 04 сентября 2014

вставьте следующий код в событие нажатия клавиши вашего текстового поля:

     private void txtbox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
    }
3 голосов
/ 21 декабря 2011

вы можете использовать Char.IsDigit() метод

0 голосов
/ 04 сентября 2018

Методы, предложенные выше, не позволяют пользователю вводить что-либо кроме номера, но произойдет сбой, если пользователь скопирует и вставит какой-то текст в текстовое поле, поэтому нам также необходимо проверить ввод для события изменения текста

Создать ontextchangeEvent

 private void TxtBox1_textChanged(object sender, EventArgs e)
    {
        if (!IsDigitsOnly(contactText.Text))
        {
            contactText.Text = string.Empty;
        }
    }

private bool IsDigitsOnly(string str)
    {
        foreach (char c in str)
        {
            if (c < '0' || c > '9')
                return false;
        }

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