Почему я не могу надежно сфокусировать элемент управления в Winforms? - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть форма, которая состоит из различных элементов управления слева, а основной частью является окно браузера, в котором отображается HTML-файл, созданный другими элементами управления. После создания файла я пытаюсь установить фокус на окне браузера, чтобы колесо прокрутки работало.

При каждой попытке ODD это работает, при EVEN попытках это не удается.

Существует два пути кода (оба начинаются с нажатия кнопки), которые генерируют вывод, оба сводятся к:

Browser.Focus();
Browser.DocumentText = RenderAsHTML();

Первая кнопка также обновляет список слева, вторая - нет. Шаблон нечет / чет не зависит от того, какая кнопка была нажата.

Что здесь происходит в мире?

Пробуя ответ ниже и затем бросая в него вещи, я нашел кое-что очень интересное:

Система считает, что окно IS сфокусировано. Browser.Focused возвращает true, даже если он не принимает сообщения колеса прокрутки.

Чтобы сделать этот тест еще более странным, я включил в него ящик с сообщениями, показывающий некоторые переменные - и когда этот ящик был очищен, возвращаясь к экрану, колесо прокрутки работало 100% времени. Удаление ONLY строки MessageBox.Show вернуло ее к старому поведению.

1 Ответ

0 голосов
/ 18 января 2012

на Winforms c # - Установите фокус на первый дочерний элемент управления TabPage найдет аналогичный вопрос, там лучший ответ говорит, что вы должны поставить

 ActiveControl = yourControlThatReceiveFocus;
...