C#:从 KeyEventArgs 获取按下的正确按键 关键数据

发布于 2024-07-19 05:04:42 字数 231 浏览 12 评论 0原文

我正在捕获 KeyDown 事件,我需要能够检查当前按下的键是否为: Ctrl + Shift + M?


我知道我需要使用 KeyEventArgs 中的 e.KeyDataKeys 枚举以及带有枚举标志和位的内容,但我不是确定如何检查组合。

I am trapping a KeyDown event and I need to be able to check whether the current keys pressed down are : Ctrl + Shift + M ?


I know I need to use the e.KeyData from the KeyEventArgs, the Keys enum and something with Enum Flags and bits but I'm not sure on how to check for the combination.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清晰传感 2024-07-26 05:04:42

您需要使用修饰符 KeyEventArgs 类的属性。

就像是:

//asumming e is of type KeyEventArgs (such as it is 
// on a KeyDown event handler
// ..
bool ctrlShiftM; //will be true if the combination Ctrl + Shift + M is pressed, false otherwise

ctrlShiftM = ((e.KeyCode == Keys.M) &&               // test for M pressed
              ((e.Modifiers & Keys.Shift) != 0) &&   // test for Shift modifier
              ((e.Modifiers & Keys.Control) != 0));  // test for Ctrl modifier
if (ctrlShiftM == true)
{
    Console.WriteLine("[Ctrl] + [Shift] + M was pressed");
}

You need to use the Modifiers property of the KeyEventArgs class.

Something like:

//asumming e is of type KeyEventArgs (such as it is 
// on a KeyDown event handler
// ..
bool ctrlShiftM; //will be true if the combination Ctrl + Shift + M is pressed, false otherwise

ctrlShiftM = ((e.KeyCode == Keys.M) &&               // test for M pressed
              ((e.Modifiers & Keys.Shift) != 0) &&   // test for Shift modifier
              ((e.Modifiers & Keys.Control) != 0));  // test for Ctrl modifier
if (ctrlShiftM == true)
{
    Console.WriteLine("[Ctrl] + [Shift] + M was pressed");
}
本宫微胖 2024-07-26 05:04:42

我认为使用它最简单:

if(e.KeyData == (Keys.Control | Keys.G))

I think its easiest to use this:

if(e.KeyData == (Keys.Control | Keys.G))

如痴如狂 2024-07-26 05:04:42

您可以使用类似于以下的技术进行检查:

if(Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Shift)

这与正常的键检查相结合将为您提供所需的答案。

You can check using a technique similar to the following:

if(Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Shift)

This in combination with the normal key checks will give you the answer you seek.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文