【发布时间】:2019-11-21 23:38:02
【问题描述】:
我有一个小型事件处理程序来处理用户按下或条形码扫描仪提供的所有键:
public void KeyDownSink(object sender, System.Windows.Input.KeyEventArgs e)
{
_textRead.Append(e.Key);
}
private StringBuilder _textRead = new StringBuilder();
变量_textRead 应该收集所有按下的字符。我只对产生可打印输出的键感兴趣(a-z,0-9, !"§$%& 等等)。如果用户按下例如 Ctrl 这将添加字符串 LeftCtrl 到_textRead,所以我想跳过这个键。
如何优雅地过滤掉Ctrl、Shift、Alt等控制键?强>
我知道我可以通过很多条件语句来实现这一点 (if e.Key == Key.Ctrl),但我希望找到更好的方法。
【问题讨论】:
-
你能不能不检查它为
char.IsNumberchar.IsLetter只是将密钥转换为char 并且只允许两个条件 -
@V4Vendetta:但是如何将
Key枚举转换为char?