Вы можете либо запретить любой нечисловой ввод, либо просто отфильтровать цифры в тексте.
Запрет ввода без цифр
Использование BeforeTextChanging
event:
<TextBox BeforeTextChanging="TextBox_OnBeforeTextChanging" />
А теперь обработайте так:
private void TextBox_OnBeforeTextChanging(TextBox sender,
TextBoxBeforeTextChangingEventArgs args)
{
args.Cancel = args.NewText.Any(c => !char.IsDigit(c));
}
Это выражение LINQ вернет true
и, следовательно, Cancel
изменение текста в случае, если оно встретится с любымсимвольный символ на входе.
Фильтрация нецифрового ввода
Использование события TextChanging
:
<TextBox TextChanging="TextBox_OnTextChanging" />
И обрабатывать так:
private void TextBox_OnTextChanging(TextBox sender, TextBoxTextChangingEventArgs args)
{
sender.Text = new String(sender.Text.Where(char.IsDigit).ToArray());
}
Этот запрос LINQ отфильтрует нецифровые символы и создаст новый string
только с цифрами на входе.
Предпочтительно использовать TextChanging
и BeforeTextChanging
, поскольку TextChanged
происходит слишком поздно, поэтому пользователь будет сбит с толку, увидев символы, временно отображаемые на экране и сразу исчезающие.