Есть ли способ проверить или снять флажок WinForm с помощью сочетания клавиш? - PullRequest
1 голос
/ 02 августа 2011

Мне нужно установить комбинацию клавиш в WinForm.Для проверки или снятия отметки.

Я не знаю возможности этого.

Но с помощью клавиш со стрелками и пробела это можно сделать.

Myтребование, как показано ниже, ..

Alt + C - Checked
Alt + U - Un checked.

Есть ли какие-либо возможности?

Ответы [ 3 ]

3 голосов
/ 02 августа 2011

Вы можете вручную проверить требуемую комбинацию клавиш в форме нажатия клавиш следующим образом (при условии C #): - вам следует попробовать другую комбинацию клавиш из-за зарезервированной мнемоники клавиатуры, как упомянул Коди Грей.

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    // When the user presses both the 'Alt' key and 'C' key,
    if (e.Alt && e.KeyCode.ToString() == "C")
    {

        //check the checkbox
        this.checkBox1.Checked= true;

    } 

    // When the user presses both the 'Alt' key and 'U' key,
    if (e.Alt && e.KeyCode.ToString() == "U")
    {

        //Uncheck the checkbox
        this.checkBox1.Checked= false;

    } 
}

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

1 голос
/ 02 августа 2011

Вы можете сделать это с помощью мнемоники ... (если вы не возражаете, включив ключ, который вы хотите использовать для ярлыка в тексте флажка).

  • Убедитесь, что UseMnemonicустановите в свой флажок значение true (я думаю, что это значение по умолчанию)
  • Введите ключ, который вы хотите использовать, в тексте флажка с префиксом амперсанда (например, & Check)

... тогда клавиша будет подчеркнута в тексте, когда нажата клавиша alt, и нажатие мнемонической клавиши альтернативно установит и снимет флажок.

0 голосов
/ 18 марта 2014

Этого можно добиться, переопределив processCmdKey элемента управления формы.Вы можете настроить все ваши ярлыки таким образом.Проверьте следующий код ниже (VB.NET):

Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean
    If keyData = Keys.N Then
         ''call a method that check or uncheck the control
    End If 
   ''you can even combine modifiers keys
    If keyData =keys.Control + Keys.T Then
        ''do something
    End If

    Return MyBase.ProcessCmdKey(msg, keyData)
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...