您如何像按钮发件人一样进行按键设置

问题描述 投票:-2回答:1
if (e.KeyData == Keys.A)
            {
                foreach (var labels in lblcollection)
                {
                    if (labels.BackColor == Color.Blue)
                    {
                        if (item.Text == "A")
                        {
                            timer2.Start();
                            addbullet();
                        }
                    }
                }
            }

我如何在不手动执行的情况下对键盘上的所有字母重复此操作?有捷径吗?类似于:

“按钮(发送者)”

c# windows-forms-designer
1个回答
0
投票

几乎每个键都编写它,这几乎就是您要做的方法。 Windows Forms *中没有预先存在的快捷方式系统。 e.KeyData是此操作的发送者,执行它甚至不需要强制转换。

*嗯,有一个。但这仅适用于Keyboard-only Navigation of the menu。因此可能不是您要寻找的机器人。

您可以使用switch / case块对此进行一些整理。键是一个枚举,因此,即使没有新的模式匹配支持,您也可以使用它。

您通常可以使用收藏夹来更换开关/外壳。想到Dictionary<Keys, Action>。使用that和Lambda函数,您几乎可以将其忽略。

但是,如果您打算在此处使用任何快捷键,它们也将跨入命令模式。模式的想法是,您有一堆命令和几种调用它们的方法(热键,按钮,MenuItems)。

© www.soinside.com 2019 - 2024. All rights reserved.