Страницы

Поиск по вопросам

среда, 22 мая 2019 г.

Ввод в TextBox только цифр и английских символов

Как наиболее правильно запретить ввод в TextBox символов любой раскладки кроме английской и цифр. Желательно не сравнивая в цикле каждый символ строки с шаблоном.

private void validationTextBox_KeyDown(object sender, KeyEventArgs e) { TextBox a = (TextBox)sender; if (e.Key < Key.D0 || e.Key > Key.F) e.Handled = true; //code }


Ответ

У меня работает код, основанный на этом ответе


void OnPreviewTextInput(object sender, TextCompositionEventArgs e) { e.Handled = !e.Text.All(IsGood); }
private void OnPasting(object sender, DataObjectPastingEventArgs e) { var stringData = (string)e.DataObject.GetData(typeof(string)); if (stringData == null || !stringData.All(IsGood)) e.CancelCommand(); }
bool IsGood(char c) { if (c >= '0' && c <= '9') return true; if (c >= 'a' && c <= 'f') return true; if (c >= 'A' && c <= 'F') return true; return false; }
Вставка работает, если в ней нет запрещённых символов.

Комментариев нет:

Отправить комментарий