C#-如何将windows.forms.keys代码转换为整数

我有一个项目,其中我已将某些功能分配给单个字符(例如,键盘琴键“ H”将执行高通滤波).

现在,要获取“ H”作为输出,我创建了一个down事件,希望该事件可以使按键按下并使用整数值调用该函数.但是,当我尝试将输入值与函数中的整数值进行比较时,出现错误.以下是我的代码…

public static event DownEventHandler Down;
public static delegate void DownEventHandler(string Key);
Down(FunctionChar((Keys)lParam.Code));    // lParam.code is an integer value.

private string FunctionChar(Keys e)
{

      if(e >=65 && e<=90){

          if (Control.IsKeyLocked(Keys.CapsLock) || ((Control.ModifierKeys !=0) && (Keys.Shift) != 0))
            {
                return e.ToString;
            }
            else
            {
                return e.ToString.ToLower;
            }

}

我假设此函数将给我输出字符串“ G”或“ g”.如前所述,我想在其他功能中使用它.

但是它给我以下错误.

Operator '>=' cannot be applied to operands of type 'System.Windows.Forms.Keys' and 'int'

我知道解决方案之一是使用SWITCH语句,但我想使用if语句而不是切换.

有人可以告诉我-这是什么问题? “ e”具有什么值,如何将其转换为(Int),以便可以在IF语句中使用它.

解决方法:

您无法将System.Windows.Forms.Key与和Integer进行比较,因此在比较它们之前必须将已转换的键转换为整数.这是给你的一个例子:

 Keys e = Keys.A;
 int keyVal= (int)e;// return 65

所以你可以这样:

 if((int)e >=65 && (int)e<=90)
{
// your code goes here 
}

执行此操作的另一种方法是:

  if(e >= Keys.A&& e<= Keys.Z)
    {
    // your code goes here 
    }

更新:
您可以使用以下命令返回相应的字符:return((char)e).ToString();

因此,整个功能签名将如下所示:

private string FunctionChar(Keys e)
        {

            if ((int)e >= 65 && (int)e <= 90)
            {

                if (Control.IsKeyLocked(Keys.CapsLock) || ((Control.ModifierKeys != 0) && (Keys.Shift) != 0))
                {
                    return ((char)e).ToString();
                }
                else
                {
                    return ((char)e).ToString().ToLower();
                }
            }
            return "";
        }
上一篇:c#-使用语音命令启用和禁用语音识别


下一篇:双向通信的TCP服务器