【发布时间】:2012-02-26 02:14:36
【问题描述】:
基本上我有运行时加载的类,如下所示:
[Plugin("Plugin name")]
class PluginActions
{
[Action("Flip Normals")
public void FlipNormals()
{
// code ....
}
[Action("Export .X object")
public void ExportX()
{
// code ....
}
}
这基本上是在设置了 onClick 事件处理程序的情况下向表单添加按钮。
现在我想使用属性以相同的样式指定 HOTKEY:
[Plugin("Plugin name")]
class PluginActions
{
[Action("Flip Normals", Hotkey = "Ctrl+N")
public void FlipNormals()
{
// code ....
}
[Action("Export .X object", Hotkey = "Ctrl+E")
public void ExportX()
{
// code ....
}
}
问题是,如何表示和捕获热键?作为字符串?可能有这样的课程吗?
void Form_KeyDown(object sender, KeyEventArgs e)
{
// reflection magic ...
foreach(var action in actionAttributes)
{
string action_hotkey = action.hotkey;
/**** How to match KeyEventArgs against action_hotkey? ****/
}
}
有处理热键的 .net 辅助类吗?
或者我是否必须推出自己的某种热键类?
这里的正确方法是什么?
【问题讨论】:
标签: c# .net reflection plugins hotkeys