如何将快捷键添加到没有文本的复选框

时间:2012-01-13 09:51:43

标签: c# .net winforms controls mnemonics

我想将快捷键添加到复选框。复选框没有文本。我有标签,然后是Checkbox。标签有ex的快捷键。 &安培;可见。因此,Label将V作为快捷键。如果有人按Alt + V,则chechbox应从选择状态更改为未选择状态,并以相反方式更改。

2 个答案:

答案 0 :(得分:2)

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

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

example of textbox with a label used as the mnemonic

好吧,如果必须的话,你可以用复选框控件做同样的事情(尽管我真的不确定你为什么要这样做)。设置标签的助记符(&Visible),然后将标签放在要使用的复选框旁边。 Use the TabIndex configuration options in the Visual Studio IDE确保标签的标签索引为 n ,复选框控件的标签索引为 n + 1

无需覆盖ProcessCmdKey或其他任何困难的事情。

答案 1 :(得分:1)

您可以像这样查看以下代码部分。

        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;
            }
        }