我正在为 Windows 10 编写一个 C# Windows 窗体应用程序,类似于系统虚拟键盘。该应用程序位于最顶层,它不会通过覆盖 CreateParams 和 ShowWithoutActivation 来窃取焦点:
private const int WS_EX_NOACTIVATE = 0x08000000;
protected override CreateParams CreateParams
{
get
{
CreateParams params = base.CreateParams;
params.ExStyle |= WS_EX_NOACTIVATE;
return (params);
}
}
protected override bool ShowWithoutActivation
{
get { return true; }
}
该应用程序可以由用户最小化到系统托盘。这不会改变焦点。但是,当应用程序从系统托盘恢复(通过单击应用程序图标)时,当前活动窗口失去焦点。
有没有办法避免这种行为并保持活动窗口(在鼠标单击之前)集中?
该应用程序被最小化并使用以下方法恢复:
this.Hide(); // minimize on close event
..
this.Show(); // restore on notify icon click event
这里有一个类似的问题,但它已经过时了:
Prevent system tray icon from stealing focus when clicked
子衿沉夜
相关分类