gpt4 book ai didi

.net - 如何在 Windows 窗体应用程序中创建复合键盘快捷键?

转载 作者:行者123 更新时间:2023-12-03 23:44:55 24 4
gpt4 key购买 nike

我想创建一个组件,允许我们拥有与任意命令关联的复合键盘快捷键,就像 Visual Studio IDE 和 Microsoft Office 一样。

也就是说,键盘快捷键由多个击键序列组成,例如 Ctrl + W + C。在 Visual Studio 中,这将打开类 View 。当按下第一组键 (Ctrl + W) 时,状态栏中会显示消息“(Ctrl + W) 已按下。等待和弦的第二个键...”。

最佳答案

回答的问题键盘和弦具体来说,我认为目前没有现成的选项可供您使用。

但是,建模应该足够简单。我会创建一个类,也许是 KeyboardChordProvider .它需要了解表单级别的键盘事件。如别处所述,Form.KeyPreview属性必须是 true .该提供商订阅 Form.KeyPress 可能就足够了事件。如果您传入表单,您可以在提供者的构造函数中完成所有这些操作。

您需要向提供商注册潜在的击键。

在内部,此实例将跟踪当前状态。每当观察到代表和弦第一个键的击键时,您将更新提供者的状态并引发一个事件,以便订阅者可以设置文本:(CTRL+W) 被按下。等待和弦的第二个键...

如果下一次击键匹配一个潜在的次要选项,那么你就有一个匹配项,并且可以引发 ChordPressed包含输入笔画详细信息的事件。或者,您可以只调用在注册和弦时提供给提供者的特定回调(以避免在 ChordPressed 事件处理程序中使用 switch 语句或其他一些调度)。

如果在任何时候,击键与潜在的下一个选项不匹配,那么您将重置提供程序的状态。

在提供者内部,您可以使用树结构对可能的击键进行建模。提供者的当前状态只是一个特定的树节点。一开始,根节点是事件的。如果一个 child 匹配一个击键,那么它就成为当前节点以期待下一个击键。如果子节点是叶节点,则整个和弦已匹配,您将提高 ChordPressed事件(传递使您到达该点的笔画链)或调用存储在叶子中的回调。每当没有击键匹配子节点时,重置回使根节点处于事件状态。

我认为这种设计会实现你想要的。

关于.net - 如何在 Windows 窗体应用程序中创建复合键盘快捷键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/192055/

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