Как заблокировать пользовательский ввод на основе списка символов? - PullRequest
1 голос
/ 19 декабря 2010

У меня есть список символов:

var l = new List<char>();
l.AddRange(Path.GetInvalidFileNameChars());
l.AddRange(Path.GetInvalidPathChars());

Я хочу определить, когда пользователь нажимает один из заблокированных символов и устанавливает SupressKeyPress на true.

У меня есть e.KeyCode, e.KeyData и e.KeyValue, но ни один из них не соответствует, например, ?.

Как я могу это проверить?

Ответы [ 2 ]

3 голосов
/ 19 декабря 2010

Вы можете подавить KeyPress, установив для Handled значение true:

var l = new List<char>();
l.AddRange(Path.GetInvalidFileNameChars());
l.AddRange(Path.GetInvalidPathChars());

this.KeyPress += (s, e) =>
{
    e.Handled = l.Any(x => x == e.KeyChar);
};
0 голосов
/ 18 февраля 2015
e.Handled = true;

Кажется, не работает, по крайней мере, для меня.

Свойство, которое работало с событием KeyDown с:

e.SupressKeyPress;

Поскольку KeyDown происходит до KeyPressили события KeyUp, я «фильтровал» ключи, которые я хотел обработать в дополнительном событии KeyDown.

Свойство SupressKeyPress MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...