У меня есть приложение Windows Form, которое, когда форма активирована, деактивирована или SizeChanged, форма что-то делает. Это довольно специфично. Например:
Форма активирована : установит для переменной isActive
значение true и сфокусирует ввод в поле ввода, чтобы кто-то тоже мог что-то ввести.
Форма деактивирована : установит для переменной isActive
значение false, чтобы любые изменения фокуса в приложении (вызванные сообщениями удаленного компьютера, сообщениями чата и т. Д.) Не захватывали фокус из других приложений .
Прямо сейчас у меня есть команда webBrowser1.Focus()
внутри события Form Activated
, которая не идеальна, например, когда вы нажимаете на значок на панели задач, она пытается свести к минимуму, но, поскольку она фокусируется обратно на веб-браузере, Затем форма восстанавливается / активируется снова.
Я провел здесь поиск по переполнению стека и нашел следующую информацию:
Отредактировано для приведенной ниже информации:
Я нашел эту информацию в другом посте здесь о переполнении стека:
protected void OnActivateApp(bool activate)
{
Console.WriteLine("Activate {0}", activate);
}
protected override void WndProc(ref System.Windows.Forms.Message m)
{
// Trap WM_ACTIVATEAPP
if (m.Msg == 0x1c) OnActivateApp(m.WParam != IntPtr.Zero);
base.WndProc(ref m);
}
Но поведение похоже на проблему, с которой я сталкиваюсь в вышеупомянутых 2 событиях. Когда значок на панели задач щелкается, форма ловит Деактивировано:
Активировать Ложь
Но сразу же, он делает это:
Активировать True
Может показаться, что при сворачивании окна с помощью кнопки панели задач оно остается «сфокусированным» приложением до тех пор, пока вы не нажмете другое приложение.
В одном из постов было предложено захватить GotFocus
формы, но я не могу найти событие для уровня формы для GotFocus
, поскольку GotFocus
получено из элемента управления, а не из приложения форма.
Вопрос: Как разрешить сворачивание формы с помощью кнопки на панели задач, и когда форма будет повторно отображена, заставить ее выполнить команду webBrowser1.Focus()
, чтобы поместить фокус в нужное место