有没有"grouped"方法可以知道PreviewKeyDown键是否为删除,主页,结束,Pg Up等



我有一个用于过滤输入的 PreviewKeyDown 事件(我需要过滤掉空格等,所以使用 PreviewKeyPress 就不用了)。

一切都工作正常,除了它吃掉我的删除,退格键,主页,箭头,向上翻页等按键。

我可以尝试考虑我认为应该允许的所有密钥,并告诉我的事件忽略它们:

if ((e.Key == Key.Up) || (e.Key == Key.Down) || (e.Key == Key.Left) 
    || (e.Key == Key.Right) || (e.Key == Key.Delete) || (e.Key == Key.Home) 
    || (e.Key == Key.End) || (e.Key == Key.PageUp) || (e.Key == Key.Insert) 
    || (e.Key == Key.F1))

但我相信我会想念一些。

有没有更好的方法,只是做一个巨大的"或"声明并希望我得到它们?

我会在KeyPress中进行过滤。此时,您将处理字符,而不是键。所以你不需要关心其中的大多数(AFAIR有一些例外,比如返回或退格)。

使用e.Handled来压制字符。

我正在使用这个: 你如何获得适合给定 KeyDown 事件的字符? 将我的键值转换为字符。

我意识到,如果密钥不是有效的字符,则将其设置为 ASCII 32(空格)。

所以我要过滤掉它....

// If this was not a true char then it will convert to the ASCII Space (#32).
// If this is not really a char, then we are done.
if ((newChar == (char)32) && (e.Key != Key.Space))
    return;

最新更新