我的应用程序运行查询,当它们运行时,我禁用主应用程序并显示进度条屏幕。我希望这两个屏幕表现为一个单一的实体。我的意思是,如果用户在执行查询期间最小化主应用程序,那么进度屏幕也会被最小化。如果他们最大化或重新启动主应用程序,进度屏幕也会恢复(并且在前面)。
我尝试使用_StateChanged事件并在其中操作进度屏幕来完成此操作,但它无法正常工作。 WriteLines按它们应该触发,但是进度屏幕没有变化(即,当我最大化主应用程序时,进度屏幕没有最大化)。
private void mainWindow_StateChanged(object sender, EventArgs e)
{
Console.WriteLine("State Changed");
// if the progress screen is not null
if (ql != null)
{
// if main application has been minimized
if (this.WindowState == WindowState.Minimized)
{
Console.WriteLine("State Changed to Minimized");
ql.WindowState = WindowState.Minimized; // minimize progress screen
}
// if main application has been set to normal
if (this.WindowState == WindowState.Normal)
{
Console.WriteLine("State Changed to Normal");
ql.WindowState = WindowState.Normal; // set progress screen state to normal
ql.Focus(); // bring progress screen to focus
}
// if main application has been maximized
if (this.WindowState == WindowState.Maximized)
{
Console.WriteLine("State Changed to Maximized");
ql.WindowState = WindowState.Maximized; // set progress screen state to maximized
ql.Focus(); // bring progress screen to focus
}
}
}
我很好奇是否.xaml中有属性我应该利用而不是试图在代码中完成此操作。如果没有,我的代码中缺少什么?
答案 0 :(得分:2)
如果ql是一个Window,那么你可以将它的所有者设置为mainWindow,如下所示:
../rest/api/2..
在显示ql窗口之前,您只需执行此操作一次。 你不再需要在StateChanged中做任何关于ql的事了。