WinForms检索没有Form/UserControl的键盘状态

chi*_*oro 2 c# keyboard .net-3.5 winforms

我想Ctrl在没有表格的地方检索钥匙的状态.

通常,为了获得密钥状态,我将使用Control_KeyDown/KeyUp事件.但是,需要知道是否按下Ctrl的代码在任何形式之外.有显示的形式,但代码应该依赖该表格上,而是发现自身的关键状态.

当然有一种方法可以做到这一点,只有我没有成功在谷歌上找到它.

请注意,尽管代码没有"拥有"可用的表单,但它仍然是WinForms应用程序,因此框架可能为我提供了一些实现该目标的类/对象.

背景:

在应用程序启动阶段,如果在那一刻按下Ctrl键,我希望一步操作不同.启动阶段显示启动屏幕,但启动代码不知道这一点.相反,它会向回调报告进度,并且该回调会更新启动屏幕.

如果我使用启动屏幕来获取KeyDown事件,我会使启动代码依赖于启动屏幕,这会引入循环依赖关系.我想保持自由移除闪屏并用不同的东西替换.

Pon*_*dum 10

您可以在Control被调用时使用静态方法ModifierKeys

MSDN上的Control.ModifierKeys

例如:

if (Control.ModifierKeys == Keys.Control)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)