Хочу что бы пользователь в textbox в моём WPF приложении мог вводить только числа, как на многих сайтах существуют такие поля. Можно ли это как-то реализовать? Или всегда придётся проверять на соответствие ввода определённому шаблону?
возможно. Для реализации сперва данному textbox нужно добавить предварительный просмотр вводимого текста:
<TextBox PreviewTextInput="PreviewTextInput"/>
Затем внутри установите e.Handled проверяющий разрешён ли введённый текст или нет
e.Handled = !IsTextAllowed(e.Text);
Для проверки разрешён ли текст можно использовать простое регулярное выражение в методе IsTextAllowed
. Поскольку в данном случае нужно разрешить ввод только числе, то регулярное выражение имеет следующий вид: "[^0-9.-]+". Если нужно разрешить ввод только текст, то регулярное выражение нужно просто заменить на [^a-zA-Z].
private static readonly Regex onlyNumbers = new Regex("[^0-9.-]+"); //regex that matches disallowed text
private static bool IsTextAllowed(string text)
{
return !onlyNumbers.IsMatch(text);
}
1 Вподобання