В основном у меня загруженный класс во время выполнения, который выглядит так:
[Plugin("Plugin name")]
class PluginActions
{
[Action("Flip Normals")
public void FlipNormals()
{
// code ....
}
[Action("Export .X object")
public void ExportX()
{
// code ....
}
}
Это в основном добавляет кнопки в форму с настроенными обработчиками событий onClick.
Теперь я хотел бы указать горячие клавиши в том же стиле, используя атрибуты:
[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 для работы с горячими клавишами?
Или я должен развернуть свой собственный класс горячих клавиш?
Какой правильный подход здесь?