c# - 使用大小写的键修饰符不起作用?

标签 c#

我已经定义,当按下一个键时,使用大小写来区分不同的键,就会发生一个 Action

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.B:
            //something happens here
        break;
    }
}

当我尝试添加键修饰符(例如“Ctrl”)时,我是这样做的

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.B && e.Modifiers == Keys.Control:
            //something happens here
        break;
    }
}

编辑:当我尝试这样做时,它说'&&'不能应用于'Windows.System.Forms.Keys'和'bool'类型的操作数

如何正确完成?

最佳答案

您不能将 if 语句作为 case 标签的一部分。 Case直接将标签中的常量值与switch中的变量进行比较; && 运算符的结果是 bool,它不能与 KeyEventArg 进行比较。您需要单独添加它或使用 if 语句。

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.B:
            if (e.Modifiers == Keys.Control)
                //something happens here
            //else
            break;
    }
}

关于c# - 使用大小写的键修饰符不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23614492/

相关文章:

c# - 从不同的项目调用 webservice

c# - 根据 C# LINQ 中的子节点 XML 获取特定的父节点

c# - 如果按下键或组合键,如何从后台程序检查?

c# - FileSystemWatcher 不适用于从 Windows 服务创建的文件

c# - 为什么我的代码不符合 CLS?

c# - 将类型 `System.Collections.IEnumerator` 转换为 `System.Collections.Generic.IEnumerator`

c# - ASP C# 如何编写整洁的 GUI 代码

C# 使用 AddDays 初始化日期

C# 应用求解二次虚根

c# - 尝试配置 NServiceBus 以使用 NHibernate 持久性时出现异常