Как наиболее правильно запретить ввод в 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;
}
Вставка работает, если в ней нет запрещённых символов.
Комментариев нет:
Отправить комментарий