Как использовать несколько модифицирующих клавиш в C#

Это на самом деле довольно легко:

class jail {
    int inmate;
public:
    int& escape() { return inmate; }
};
24
задан jsmith 8 November 2012 в 17:23
поделиться

5 ответов

if (e.KeyCode == Keys.C && e.Modifiers == (Keys.Control | Keys.Shift))
{
    //Do work
}
else if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
    //Paste
}
42
ответ дан 28 November 2019 в 22:47
поделиться

Have you tried e.Modifiers == (Keys.Control | Keys.Shift)?

7
ответ дан 28 November 2019 в 22:47
поделиться

Если вы хотите разрешить Ctrl и Shift , тогда используйте побитовое ИЛИ (поскольку ключи - это флаги enum)

if (e.KeyCode == Keys.C && e.Modifiers == (Keys.Control | Keys.Shift))
{
    //Do work (if Ctrl-Shift-C is pressed, but not if Alt is pressed as well)
}
else if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
    //Paste (if Ctrl is only modifier pressed)
}

Ошибка, если также нажать Alt

6
ответ дан 28 November 2019 в 22:47
поделиться

Другой способ - добавить невидимый пункт меню, назначив ему ярлык Ctrl + Shift + C , и обработать событие там.

2
ответ дан 28 November 2019 в 22:47
поделиться

Попробуйте это. Должен вести себя так, как вы хотите, и это немного проще.

 if (e.Control)
 {
    if (e.Shift && e.KeyCode == Keys.C)
    {
       //Do work
    }
    else if (e.KeyCode == Keys.V)
    {
       //Paste
    }
 }
0
ответ дан 28 November 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: