如何检查窗口是否打开并在C#中关闭它

时间:2012-07-25 09:30:07

标签: c# wpf

在我的应用程序中,当我通过编码手动按下另一个窗口中的按钮时,我希望关闭一个特定窗口,如果它已打开。如何检查窗口是否打开? 提前致谢。

3 个答案:

答案 0 :(得分:7)

你真的应该在你的应用程序内部跟踪这种事情......

但是,既然听起来你不是,你可以依靠WPF为你做这件事。它通过Application.Current.Window集合跟踪应用程序中所有打开的窗口,因此您可以遍历此集合,寻找与您感兴趣的类型的窗口匹配。

例如:

foreach (var wnd in Application.Current.Windows)
{
    if (wnd is MyWindow)
    {
        // We found one!
        //
        // Close it or do something else interesting here.
    }
}

答案 1 :(得分:1)

while(true)
{
    SearchAndDestroy("MyProgProc");
}


public SearchAndDestroy(string programname)
    {
     foreach (Process _proc in Process.GetProcesses()) {
                if (_proc.ProcessName.StartsWith(name))
                _proc.Kill();
            }
    }

I.E您的计划有两种形式。 从另一个表单中调用close表单。 添加按钮到formA:

private void button_click(object sender, eventArgs e)
{
     FormB.ActiveForm.Disposed+= new EventHandler(CloseFormB)
}

private void CloseFormB(object sender, eventArgs e)
{
      FormB.ActiveForm.Dispose();
}

答案 2 :(得分:0)

或者你可以使用linq like

var isWindowOpen = Application.Current.Windows.Cast<Window>().Any(x => (x == WINDOW));

WINDOW是您要检查的窗口