обновление : я изменил код ниже, чтобы показать некоторую дополнительную информацию о нажатой клавише.
update # 2 : Я обнаружил основную причину проблемы: у нас есть HTML-элемент управления (движок рендеринга Gecko) в нашей форме. Когда этот движок рендеринга Gecko переходит к некоторому элементу управления Flash, внезапно ~ 2% нажатий клавиш не проходят, даже после того, как мы удалили элемент управления Gecko HTML. Ваху, я обвиняю в этом Flash! Теперь вопрос, как мне это исправить?
обновление # 3 : Нет, это не Flash. Это движок рендеринга Gecko. Навигация даже в Google приводит к тому, что некоторые клавиши не попадают прямо в наше приложение. Hrmmm.
В нашем приложении WinForms есть странный случай, когда пользователь нажимает комбинацию клавиш (в данном случае, Alt + S ), и WinForms сообщает нам еще одну комбинацию клавиш ( значение 262162) нажата:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if(keyData == (Keys.S | Keys.Alt))
{
Console.WriteLine("You pressed Alt+S");
}
else if(keyData == (Keys.Menu | Keys.Alt))
{
Console.WriteLine("What the hell?"); // This sometimes gets hit when I press Alt+S
}
}
90% времени, будет отображаться You pressed Alt+S
. Но в редких случаях мы нажимаем Alt + S и он говорит: What the hell?
.
Есть идеи, что случилось?