【问题标题】:Setting hotkey with variable使用变量设置热键
【发布时间】:2012-04-21 05:26:39
【问题描述】:

我正在使用下面的代码作为热键,并想为它使用一个变量,但它不允许我:

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)' 的最佳重载方法匹配有一些无效参数

有什么想法吗?

【问题讨论】:

  • Pvt.HookedKeys的类型是什么?

标签: c# variables


【解决方案1】:

问题

如果我错了,请纠正我,但您似乎使用的是代码项目文章中的源文件,A Simple C# Global Low Level Keyboard Hook
如果是这种情况,那么您会收到此错误,因为 HookedKeys 列表旨在包含 Keys 枚举,而不是字符串。

    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;
    } 

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 2018-12-21
    • 2021-11-09
    • 2011-03-21
    • 1970-01-01
    • 2016-04-30
    相关资源
    最近更新 更多