WinForms - захват ключа перед контролем - PullRequest
1 голос
/ 21 апреля 2011

У меня есть форма, и я подписываюсь на событие KeyUp и обрабатываю клавишу ALT, это прекрасно работает, но только когда моя форма имеет фокус, если элемент управления на форме имеет фокус, тогда это больше не работает;что я могу использовать для захвата клавиш, когда элементы управления имеют фокус?Я бы предпочел не подписываться на каждое событие KeyUp на каждом элементе управления формы ...

Спасибо.

Ответы [ 2 ]

4 голосов
/ 21 апреля 2011

Будет ли свойство KeyPreview формы работать на вас?

2 голосов
/ 21 апреля 2011

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

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if ((keyData & Keys.Alt) == Keys.Alt)
        {
            Debug.WriteLine("ALT");
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }
...