Приветствую Сообщество! Попробую объяснить, что мне требуется, точнее что хочется сделать...
В приложении с Windows Forms у меня есть поле ввода - обычный TextBox. Я хочу, чтобы пользователь вводил туда шестнадцатеричные значения, то есть символы от 0 до 9, а также A, B, C, D, E, F, либо то же самое маленькими буквами. То есть все остальные символы должны игнорироваться. Как можно настроить подобную фильтрацию? Желательно максимально просто, но оптимально.
Дополнение: получаем допустимые символы (0 - 9, A - F, a - f), остальные не подходят и не должны появляться в TextBox.
Можно в обработчике KeyPress() реализовать:
private void MyTextBox_KeyPress(object sender, KeyPressEventArgs e) { if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar) || (e.KeyChar >= 'A' && e.KeyChar <= 'F') || (e.KeyChar >= 'a' && e.KeyChar <= 'f'))) { e.Handled = true; } }
Спасибо, работает! Только не очень понял как...
Тут:
- char.IsControl(e.KeyChar) - проверяем, является ли символ управляющим (tab, esc и т. д.)
- char.IsDigit(e.KeyChar) - является ли вводимый символ цифрой от 0 до 9
- (e.KeyChar >= 'A' && e.KeyChar <= 'F') - от A до F
- (e.KeyChar >= 'a' && e.KeyChar <= 'f') - от a до f
Если ни одно из этих условий не выполнилось, то попадаем на e.Handled = true, то есть по сути ввод недопустимого символа игнорируется.
@aveal теперь все понятно, продолжаю ковыряться дальше, скорее всего еще вернусь с вопросами...