我有一个项目,其中我已将某些功能分配给单个字符(例如,键盘琴键“ H”将执行高通滤波).现在,要获取“ H”作为输出,我创建了一个down事件,希望该事件可以使按键按下并使用整数值调用该函数.但是,当我尝试将输入值与函...

我有一个项目,其中我已将某些功能分配给单个字符(例如,键盘琴键“ 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#-如何将windows.forms.keys代码转换为整数


- C#实现学生管理系统 2023-06-27
- c# – Windows phone 7从应用程序访问Dropbox 2023-09-18
- c# – ITextSharp合并多个pdf的内存不足异常 2023-09-18
- 浅谈c# 浮点数计算 2022-11-15
- Unity Sockect实现画面实时传输案例原理解析 2023-04-27
- 浅谈static a[n*m]={0};中static的作用 2022-11-05
- Windows Server 2012 安装 dotnet core 2.2 sdk 2023-09-28
- Unity Shader实现翻书效果 2023-02-03
- C#实现同步模式下的端口映射程序 2023-06-15
- C#使用CefSharp实现内嵌网页详解 2023-07-18