0

我想为复选框添加快捷键。复选框没有文字。我有标签,然后是复选框。标签有 ex 的快捷键。&可见的。所以,Label 有 V 作为快捷键。如果有人按 Alt+V,则 chechbox 应该从选中状态变为未选中状态,并且以相反的方式相同。

4

2 回答 2

2

您可以像这样检查它,请参阅以下代码部分。

        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            // look for the expected key 
            if (keyData == Keys.Alt && keyData == Keys.V)
            {
                checkBox1.Checked = true;
                return true;
            }
            else
            {
                checkBox1.Checked = false;
                return false;
            }
        }
于 2012-01-13T10:13:05.057 回答
2

标签控件在键盘助记符方面是特殊的。由于标签永远无法获得焦点,因此每当您尝试使用其键盘助记符将焦点设置为标签时,标签会将焦点设置为选项卡顺序中的下一个控件。

这适用于文本框和组合框,它们没有任何用于显示标签的内置工具(与复选框和选项按钮控件相比)。要为这些控件设置助记符,您可以在它们旁边放置一个标签,为其设置助记符,并确保它在 Tab 键顺序中位于文本框之前。这样,当用户激活标签的键盘助记符时,它会自动将焦点设置到文本框控件。您已经在 Windows 中到处看到了这一点:

     带有用作助记符的标签的文本框示例

好吧,如果必须,您可以使用复选框控件执行完全相同的操作(尽管我真的不确定您为什么要这样做)。设置标签 ( &Visible) 的助记符,然后将标签放置在您希望它使用的复选框旁边。使用TabIndexVisual Studio IDE 中的配置选项来确保如果标签具有选项卡索引n,则复选框控件具有选项卡索引n+1

没有必要覆盖ProcessCmdKey或任何其他困难。

于 2012-01-13T10:58:10.930 回答