c# - 将 Ctrl 热键绑定(bind)到 Windows 窗体按钮

标签 c# winforms button hotkeys

通过在按钮的文本属性中的热键字符前添加 &,可以很容易地为 Windows 窗体按钮设置 Alt 热键。

现在,我需要创建一个包含大约 50 个按钮的控件(不要问),并且希望为每个按钮设置一个热键,利用 Ctrl 热键以及 < kbd>Alt 热键。此外,希望 Ctrl 热键模仿 Alt 热键行为,因为当您按下 Ctrl 按钮时,下划线将出现在指示热键的按钮。

我可以捕获关键事件并尝试模仿行为,但有没有更直接的方法来做到这一点?可能不是问题,但还需要根据存储在数据库中的定义以编程方式生成按钮。

编辑: 进一步解释这个问题,问题不仅在于捕获命令键,而且实际上能够捕获控制键,然后能够改变按钮中的显示向用户显示该按钮的控制热键是什么。

下面是在控制级别捕获命令键和控制键的一些简介(尽管看起来还需要一些技巧才能让 OnKeyDown 触发):

    protected override void OnKeyDown(KeyEventArgs e)
    {
        if (e.Control)
        {
            // Show the hotkey on the buttons with ctrl hotkeys
        }
    }
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        switch (keyData)
        {
            case Keys.Control | Keys.C:
                // Execute the Ctrl + C button action
                btnControl_Click(this, null);
                return true;
            default:
                break;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

在控件级别,是否可以更改按钮显示以模仿热键行为以显示下划线?看起来您不能将格式设置到按钮的 Text 属性中。

控制级别的方法也有更多问题,因为按钮是在运行时动态生成的。理想的是能够为按钮分配 AltCtrl 热键。我想我可以扩展按钮控件以添加控件热键行为。似乎应该有更直接的方法。

最佳答案

没有一种方法像使用“&”一样简单,但是 Building Keyboard Accelerators into .NET Windows Forms Applications 很好地解释了如何去做。

关于c# - 将 Ctrl 热键绑定(bind)到 Windows 窗体按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315542/

相关文章:

c# - 对 ViewModel 属性进行修饰以使用不同的名称进行绑定(bind)

c# - 扩展方法是解决这个问题的方法吗?

java - 显示某个数组列表,点击某个按钮

Android FullScreen 主题降低显示按钮的高度

c# - .NET (4.0 - C#) 的可靠加密日志记录?

c# - 如何在C#中获得USB驱动器的名称?

c# - 获取 C# 程序的已编译 asm

c# - 知道子表单何时关闭

c# - 将父鼠标事件应用到子元素

具有圆角、波纹效果和无阴影的 Android Button