c# - WinForms 在没有 Form/UserControl 的情况下检索键盘状态

标签 c# winforms .net-3.5 keyboard

我想在没有表单的地方检索 Ctrl 键的状态。

通常要获得按键状态,我会使用 Control_KeyDown/KeyUp 事件。但是,需要知道是否按下 Ctrl 的代码在任何形式之外。显示了一个表单,但代码应该依赖于该表单,而是自行查找关键状态。

当然有办法做到这一点,只是我没有成功地在谷歌上找到它。

请注意,虽然代码“没有”可用的表单,但它仍然是一个 WinForms 应用程序,因此框架可能会为我提供一些类/对象来实现该目标。

背景:

在应用程序启动阶段,如果在那一刻按下 Ctrl 键,我希望一个步骤的行为有所不同。启动阶段显示启动画面,但启动代码并不知道这一点。相反,它会向回调报告进度,并且该回调会更新启动画面。

如果我使用闪屏来获取 KeyDown 事件,我会让启动代码依赖于该闪屏,这会引入循环依赖。我想保留移除初始屏幕并替换为不同内容的自由。

最佳答案

您可以在 Control 上使用名为 ModifierKeys 的静态方法

Control.ModifierKeys on MSDN

例如:

if (Control.ModifierKeys == Keys.Control)
{
    //...
}

关于c# - WinForms 在没有 Form/UserControl 的情况下检索键盘状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3829725/

相关文章:

C#:匿名变量的内存分配

c# - 如何在 C# 中使用比较将列表 <> 复制到另一个列表 <>

c# - 为 datagridview 单元格赋值

c# - WPF ObservableCollection CollectionView.CurrentChanged 未触发

c# - NHibernate ICriteria - 排序是否允许空值?

C# Windows 通用 10 TopMost 窗口

c# - EF5 中的 UOW 和存储库模式

windows - 将 Windows 窗体应用程序转换为 Metro UI 应用程序

c# - 如何在拖动时滚动 flowlayoutpanel?

c# - 测试对象是否为 IEnumerable 的最快方法是什么?