使用变量设置热键
本文关键字:设置 变量 | 更新日期: 2023-09-27 18:30:28
我正在将下面的代码用于热键,并想为其使用变量,但它不允许我:
private globalKeyboardHook Pvt = new globalKeyboardHook();
private globalKeyboardHook Group = new globalKeyboardHook();
string pvtHotkey = Properties.Settings.Default["pvtHotkey"].ToString();
Pvt.HookedKeys.Add(Keys.F5);
Pvt.KeyDown += new KeyEventHandler(ghk_startPvt);
Group.HookedKeys.Add(Keys.F6);
Group.KeyDown += new KeyEventHandler(ghk_startGroup);
我想这样做:
string pvtHotkey = Properties.Settings.Default["pvtHotkey"].ToString();
Pvt.HookedKeys.Add(pvtHotkey);
Pvt.KeyDown += new KeyEventHandler(ghk_startPvt);
错误'System.Collections.Generic.List.Add(System.Windows.Forms.Keys)'的最佳重载方法匹配有一些无效的参数
'System.Collections.Generic.List.Add(System.Windows.Forms.Keys)'的最佳重载方法匹配有一些无效的参数
有什么想法吗?
问题
如果我错了,请纠正我,但您似乎使用的是代码项目文章"简单的 C# 全局低级键盘挂钩"中的源文件。
如果是这种情况,那么您会收到此错误,因为 HookedKeys 列表旨在包含密钥枚举,而不是字符串。
public List<Keys> HookedKeys = new List<Keys>();
解决方案
您可以通过在将字符串添加到列表之前将其转换为 Keys 枚举来解决此问题。
包括:
using System.ComponentModel;
法典:
private void Form1_Load(object sender, EventArgs e)
{
string pvtHotkey = Properties.Settings.Default["pvtHotkey"].ToString();
Keys converted = (Keys)TypeDescriptor.GetConverter(typeof(Keys)).ConvertFromString(pvtHotkey);
Pvt.HookedKeys.Add(converted);
Pvt.KeyDown += new System.Windows.Forms.KeyEventHandler(ghk_startPvt);
}
void ghk_startPvt(Object sender, System.Windows.Forms.KeyEventArgs e)
{
System.Console.WriteLine("Pressed!");
e.Handled = true;
}