在一个WPF项目中,我有一个弹出控件,我只想在按住tab键时显示它。一旦松开tab键,它就应该消失。就像电子游戏中的记分牌通常的行为一样。
如何实现这种行为?
我尝试在主窗口上使用PreviewKeyDown和PreviewKeyUp事件来实现它,如下所示:
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
Popup.IsOpen = true;
}
}
private void Window_PreviewKeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
Popup.IsOpen = true;
}
}
字符串
这种方法很好用,但是当我按住tab键然后在释放键之前将焦点切换到另一个窗口时,弹出窗口会卡住。有更好的方法解决这个问题吗?
3条答案
按热度按时间dphi5xsq1#
也许可以尝试使用
Window.Deactivated
事件Window.Deactivated on Microsoft Learnzpqajqem2#
一种方法可能是按程序执行。
字符串
e0bqpujr3#
您应该能够使用本机
SetWindowsHookEx
API来处理窗口未聚焦时发生的按键:字符串