C # Ctrl + F иногда не работает

У меня есть приложение winforms, в котором у меня есть textbox внутри формы. Мне нужно устанавливать фокус на textbox всякий раз, когда я нажимаю Ctrl + F. У меня есть следующий код в событии keyup.

        private void frm_KeyUp(object sender, KeyEventArgs e)
        {     
            // Handle 'Ctrl + F' to Find    
            if (e.KeyData == (Keys.Control | Keys.F))
                SetFocus();
        } 

Проблема, с которой я сталкиваюсь, заключается в том, что иногда, даже если основное внимание уделяется форме, и я пытаюсь нажать Ctrl + F, условие не выполняется. Я знаю, что как только я нажимаю «Ctrl», событие запускается даже раньше, чем я нажимал бы клавишу «F». В конце концов, это работает, когда я нажимаю обе клавиши одновременно. Таким образом, пользователю может показаться, что экран иногда не реагирует на клавиши.

Как мне выйти из этой ситуации?


person pradeepradyumna    schedule 13.12.2017    source источник
comment
не следует ли вам вместо этого обращаться с KeyDown?   -  person Default    schedule 13.12.2017
comment
Почему бы не обработать KeyDown и не проверить, не отключается ли Control при нажатии F?   -  person Sami Kuhmonen    schedule 13.12.2017


Ответы (1)


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

Вместо этого измените его на событие KeyDown и проверьте, был ли нажат Ctrl в момент нажатия F:

if (e.Control && e.KeyCode == Keys.F)
{
    // ...
}
person CodeCaster    schedule 13.12.2017