Обрабатывать событие KeyDown при нажатии ALT + KEY - PullRequest
4 голосов
/ 27 января 2010

Как вы обрабатываете событие KeyDown, когда клавиша ALT нажимается одновременно с другой клавишей в .NET?

Ответы [ 6 ]

7 голосов
/ 27 января 2010

Класс KeyEventArgs определяет несколько свойств для модификаторов клавиш - Alt является одним из них и оценивается в true, если нажата клавиша alt.

5 голосов
/ 27 января 2010
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Alt && e.KeyData != (Keys.RButton | Keys.ShiftKey | Keys.Alt))
    {
        // ...
    }
}
2 голосов
/ 27 января 2010

Это код, который наконец-то работает

if (e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z &&  e.Alt){
     //Do SomeThing
}
2 голосов
/ 27 января 2010

Что-то вроде:

   private void Form1_KeyDown(object sender, KeyEventArgs e)
   {
        if (e.Alt)
        {
            e.Handled = true;
            // ,,,
        }
    }
0 голосов
/ 18 июня 2016

Создайте событие KeyUp для вашей формы или используйте библиотеку, как я, чтобы получить GlobalHook, чтобы вы могли нажимать эти ключи вне формы.

Пример:

 private void m_KeyboardHooks_KeyUp(object sender, KeyEventArgs e)
                {
                    if ( e.KeyCode == Keys.Alt || e.KeyCode == Keys.X)
                    {     


                    }
                }
0 голосов
/ 15 октября 2012

Я фиксирую клавиши со стрелками alt, down или up, чтобы увеличить значение элемента управления numericUpDown. (Я использую клавишу alt + клавиша «вниз» / «вверх», потому что эта форма также имеет представление данных, и я хочу, чтобы клавиши «вниз» / «вверх» работали нормально с этим элементом управления.)

    private void frmAlzCalEdit_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Alt && e.KeyCode == Keys.Down)
        {
            if (nudAlz.Value > nudAlz.Minimum) nudAlz.Value--;

        }
        if (e.Alt && e.KeyCode == Keys.Up)
        {
            if (nudAlz.Value < nudAlz.Maximum) nudAlz.Value++;
        }

    }
...