我的所有Windows共享相同的基本WindowBase类。 我有
this.Activated += WindowBase_Activated;
和
void WindowBase_Activated(object sender, EventArgs e)
{
if (!_bActivating)
{
_bActivating = true;
activateAllWindows();
Activate();
_bActivating = false;
}
}
private void activateAllWindows()
{
Console.WriteLine("triggered");
foreach (Window window in Application.Current.Windows)
{
if (window.IsVisible && (window as WindowBase)._bActivating == false && window.WindowState==WindowState.Normal)
{
window.Activate();
}
}
}
它起作用但速度极慢。 但是我发现"触发"应用程序启动时或多或少打印100次。
我想要做的就是将所有窗口都放在前面,同时将我从任务栏点击的窗口堆叠到顶部。 我该如何改进?
P.S。我没有把我的窗户从最小化开始。就在前面。 我可以在Qt中执行此操作,因为有一个名为stackUnder的QWidget(作为窗口)
答案 0 :(得分:0)
好的,我得到了一个技巧。 在activeAllWindows我刚刚使用
window.Topmost = true;
window.Topmost = false;
防止它产生激活事件。