gpt4 book ai didi

c# - 是否有可以与传入的 KeyEventArgs 匹配的热键的 .NET 类?

转载 作者:行者123 更新时间:2023-11-30 16:26:08 25 4
gpt4 key购买 nike

基本上我有运行时加载的类,如下所示:

[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 ....
}
}

问题是,如何表示和捕获热键?作为字符串?也许有一个类(class)吗?

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 帮助程序类?

或者我是否必须推出我自己的某种热键类?

这里正确的方法是什么?

最佳答案

KeyEventArgs包含KeyData属性,其值为Keys,是一个flag,意思可以是这样的:

按键 keys = Keys.Control | Keys.F;(你的热键)

如果您以这种方式(而不是字符串)定义您的热键(属性),您就可以比较键而不是字符串。

关于c# - 是否有可以与传入的 KeyEventArgs 匹配的热键的 .NET 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9129033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com