3

我有一个 WPF 应用程序需要在第一次按下修饰键(例如 Alt 或 Control)时做出响应。无论是否同时按下其他键,都需要做出响应,所以我基本上需要能够知道这些键中的任何一个按下的瞬间。

我看到的修饰键的事件行为与其他键不同——看起来 KeyDown 事件和 PreviewKeyDown 事件实际上是在按下按钮后弹出时触发的,这没有帮助。

在深入研究事件触发问题时,我创建了一个定时后台循环来轮询所有当前的关键状态。即使这样也不起作用 --- 如果我按下修饰键,并且我没有释放该键或按下任何其他键,则此民意调查错误地表示修饰键实际上并未按下(无限期地,直到另一个键按下)

我觉得我一定错过了一些基本的东西,但到目前为止还没有运气。有任何想法吗?

4

2 回答 2

0

事实证明,这种行为特定于我的环境(在 Parallels 6.0 VM 中运行 Windows 和 Visual Studio)。Parallels 必须拦截这些事件以保留一些低级 Mac OS 功能。我不确定其他 VM 设置,但这在本机 Windows 环境中看起来不是问题。

于 2012-06-07T16:37:24.517 回答
0

您是否附加到主窗口实例上的“Keyboard.KeyDown”事件?

<Window x:Class="WpfApplication3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" Keyboard.KeyDown="Window_KeyDown">

</Window>
于 2012-06-07T01:15:54.270 回答