什么是处理多个全局热键的好设计?

时间:2012-10-13 21:34:28

标签: c# hotkeys

我很难想出一个好的设计来处理多个全球热键。

假设我有三个不同的功能绑定到三个不同的全局热键......

  1. 播放歌曲| Ctrl + P
  2. Skip Song | Ctrl + N
  3. 增加音量| Ctrl + V
  4. 检查按下的热键是否符合某项功能的有效方法是什么?我正在使用与此类似的类:http://www.liensberger.it/web/blog/?p=207

    我应该为每个热键创建热键类的新实例吗?

    Hotkey hotkey = new Hotkey();
    hotkey.RegisterHotkey(Shortcut.ModifierKeys.Control, Keys.F10);
    
    hotkey.KeyPressed += ((s, args) =>
    {
        //Do Something!
    });
    

    或者我应该有一个具有不同热键功能的枚举,并在热键类中管理它以防止多个实例(看起来很浪费但很容易)。在此提前获得任何建议/帮助。

2 个答案:

答案 0 :(得分:2)

我会选择为每个不同的函数创建一个单独的类实例,因为命令模式似乎非常适合这里。有关详细信息,请参阅this link

答案 1 :(得分:0)

为什么不让热键类静态?

 Hotkey.Register(modifier, key, callback)

并将它们保存在班级的列表中?

另外,我建议您为热键添加更多修饰符。所有人都被分配到一个共同的任务:控制 + P =打印,控制 + N =新的和控制 + V =粘贴