c# - 一种情况下多次按键

标签 c# winforms switch-statement

所以我正在制作一个将使用键盘上很多键的应用程序,我想将它们全部放在一个开关盒中。我的问题是,应用程序还需要检测组合键,例如 Shift + 9 用于括号等。我试过这个:

case Keys.Shift & Keys.D9:

但我发现“&”运算符是一元或二元运算符,其他运算符似乎都不起作用。

我可以通过制作一个嵌套的 switch-case 来解决这个问题吗:

case Keys.Shift:
    switch (e.KeyCode)
    {
         case Keys.D9:

         break;
    }
    break;

或者这是不好的做法?因为我真的不想列出一大堆 if-else 语句。

提前致谢。

最佳答案

我不会嵌套 switch-case,而是使用 if 语句。

此外,要检查组合键,我建议您使用如下内容:

if ((ModifierKeys & Keys.Shift) == Keys.Shift)
{
    switch (e.KeyCode)
    {
        case Keys.D9:
            //do stuff
            break;
    }
}

关于c# - 一种情况下多次按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36088570/

相关文章:

c# - 基于异步注解执行C# Lambda表达式

C++ switch 语句评估

Python "switch statement"和字符串格式

c++ - 我如何用 c 中的 switch 翻转我的语句?

c# - 在列表中使用数组-OOP-通用列表

c# - 使用 DisplayFormat 时未在 View 中设置日期格式

c# - 您的 SQL 语法有错误,适用于 .net 的 mysql 连接器

c# - .gif 在整个循环结束之前不会动画?

c# - 如何从 tiff 中剪下一个矩形?

c++ - 如何使用 Designer 在 C++/CLI 中继承现有 Windows 窗体控件