Ограничение пользователей на ввод только чисел в приложении c# windows

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

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

6 ответов


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

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

чтобы разрешить backspace:

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

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


чтобы разрешить только числа в текстовом поле в приложении windows, используйте

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

этот пример кода позволит ввести номера и backspace для удаления предыдущего введенного текста.


использовать Char.Метод IsDigit (String, Int32) метод и проверить NumericTextbox компания Microsoft

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


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

     private void txtbox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
    }

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


методы, предложенные выше, только предотвращают ввод пользователем ничего, кроме номера, но это не удастся, если пользователь скопирует и вставит текст внутри textbox, поэтому нам также нужно проверить ввод события изменения текста

создать 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;
    }