我需要能够检测到shift键被保持,但我不想使用事件或全局变量来确定它.C#中是否有API可以让您询问当前按下的键而不是使用该事件?
当我们的WPF应用程序启动时,它使用单点登录来登录.为了允许测试人员模拟其他用户,我们想要检测启动时按住的控制按钮,并弹出登录对话框.
所以很容易检查单元格是否被点击:
DataGridView.CellClicked += cellClickedHandler;
Run Code Online (Sandbox Code Playgroud)
并且很容易检查是否按下了一个键:
DataGridView.KeyDown += keyPressedHandler;
Run Code Online (Sandbox Code Playgroud)
我想知道如何将这两个功能合二为一?我想在用户控件单击一个单元格时执行特定操作,据我所知,这些事件的动作处理程序是两个独特的独立函数,传递给cellClickedHandler的参数不允许我获取状态可以与鼠标点击一起触发的键盘和任何按键.
我知道如何在C#中获取哪个修改键,但我不知道如何实际检查是否有任何修改键被按下.我需要在KeyUp
事件中检查它,除了做某事之外还有其他方式if(e.KeyCode != Keys.Control && e.KeyCode != Keys.Alt && ...)
吗?谢谢.
如何在KeyDown中确定按下了⇧+ Tab.
private void DateTimePicker_BirthDate_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab && e.Modifiers == Keys.Shift)
{
//do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
因为永远不会在同一秒内完全按下两个键,所以无法工作.你总是首先转向Shift,然后是另一个..