Mic*_*ley 5 keyboard wpf keyboard-events
在我的PreviewKeyDown()处理程序中,如何区分数字键盘上的ENTER键和主板上的ENTER键之间的区别?
这两个键返回相同的值Key.Enter的KeyEventArgs.Key.
我能找到最接近这个问题的答案是:Key.Enter和Key.Return有什么区别?,但遗憾的是,仅当应用程序完全受信任时,此功能才有效.
我想要一个没有这个限制的解决方案.
请参阅链接,示例实现。以下。
private static bool IsNumpadEnterKey(KeyEventArgs e)
{
if (e.Key != Key.Enter)
return false;
// To understand the following UGLY implementation please check this MSDN link. Suggested workaround to differentiate between the Return key and Enter key.
// https://social.msdn.microsoft.com/Forums/vstudio/en-US/b59e38f1-38a1-4da9-97ab-c9a648e60af5/whats-the-difference-between-keyenter-and-keyreturn?forum=wpf
try
{
return (bool)typeof(KeyEventArgs).InvokeMember("IsExtendedKey", BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Instance, null, e, null);
}
catch (Exception ex)
{
Log("Could not get the internal IsExtendedKey property from KeyEventArgs. Unable to detect numpad keypresses.", ex);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
Nb 如果你想检查常规的 EnterKey 那么显然你应该打电话
e.Key == Key.Enter && !IsNumpadEnterKey(e)
| 归档时间: |
|
| 查看次数: |
2044 次 |
| 最近记录: |