Как добавить клавишу быстрого доступа к флажку без текста - PullRequest
0 голосов
/ 13 января 2012

Я хочу добавить клавишу быстрого доступа к флажку. Флажок не имеет текста. У меня есть ярлык, а затем флажок. У ярлыка есть клавиша быстрого доступа для отл. & Visible. Итак, у Label есть V в качестве сочетания клавиш. Если кто-то нажмет Alt + V, тогда чечбокс должен измениться с выбранного на не выбранное состояние и повторить то же самое.

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Элементы управления метками являются особенными в отношении мнемоники клавиатуры.Поскольку метки не могут получить фокус, всякий раз, когда вы пытаетесь установить фокус на метку, используя мнемонику клавиатуры, метка устанавливает фокус на следующий элемент управления в порядке табуляции.

Это предназначено дляиспользовать с текстовыми полями и комбинированными списками, которые не имеют встроенных средств для отображения метки (в отличие от элементов управления флажка и кнопки выбора).Чтобы установить мнемонику для этих элементов управления, поместите рядом с ними метку, установите для нее мнемонику и убедитесь, что она находится прямо перед текстовым полем в порядке табуляции.Таким образом, когда пользователь активирует мнемонику клавиатуры для метки, он автоматически устанавливает фокус на элемент управления textbox.Вы видели это повсеместно в Windows:

example of textbox with a label used as the mnemonic

Ну, вы можете сделать то же самое с помощью флажка, если нужно (хотя я действительно неуверен, почему вы хотите).Установите мнемонику для метки (&Visible), а затем установите метку рядом с флажком, с которым вы хотите, чтобы он работал. Используйте параметры конфигурации TabIndex в Visual Studio IDE , чтобы убедиться, что если метка имеет индекс табуляции n , элемент управления флажка имеет индекс табуляции n + 1 .

Нет необходимости переопределять ProcessCmdKey или что-либо еще сложное.

1 голос
/ 13 января 2012

Вы можете проверить это следующим образом, обратитесь к следующей части кода.

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