如何根据字符列表阻止用户输入?

时间:2010-12-18 22:30:17

标签: c# winforms .net-4.0 keyboard

我有一个字符列表:

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

我想检测用户何时按下其中一个被阻止的字符并将SupressKeyPress设置为true

我有e.KeyCodee.KeyDatae.KeyValue,但例如,它们都不对应?

我该如何验证?

2 个答案:

答案 0 :(得分:3)

您可以通过将KeyPress值设置为true来禁止Handled

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);
};

答案 1 :(得分:0)

e.Handled = true;

似乎不起作用,至少不适合我。

使用KeyDown事件处理的属性:

e.SupressKeyPress;

由于KeyDown发生在KeyPress或KeyUp事件之前,我&#34;过滤&#34;我想在另外一个KeyDown事件中处理的密钥。

SupressKeyPress Property MSDN