JabbaTheFrog Ответов: 1

Преобразуйте текстовое поле, чтобы разрешить только цифры


У меня возникли некоторые проблемы с попыткой заставить мое текстовое поле работать только с цифрами, пользователям должно быть разрешено вставлять цифры только между 0 и 20. Но он не принимает ни одного кода, который я пробовал до сих пор.

Что я уже пробовал:

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

    if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
    {
        e.Handled = true;
    }
}

1 Ответов

Рейтинг:
6

OriginalGriff

Он делает именно то, для чего он был разработан: проверяет ввод числа, позволяя использовать одну десятичную точку. Он вообще не проверяет его на фактическое значение, так как не содержит кода для этого, а событие нажатия клавиши - это неправильное место для проверки в любом случае-вы не знаете, где он пытается ввести цифру, поэтому вы не можете проверить ввод "между 0 и 20", пока ключ не будет обработан.

Вместо того чтобы изобретать велосипед, не используйте текстовое поле вообще - используйте вместо него NumericUpDown: Начало работы с WPF NumericUpdown control | Syncfusion[^] так как он будет делать все проверки для вас.


JabbaTheFrog

Привет OriginalGriff

Удалось решить эту проблему большое спасибо и извините за поздний ответ!