0

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

4

3 回答 3

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.
    }
}
于 2012-07-25T09:44:45.973 回答
1
while(true)
{
    SearchAndDestroy("MyProgProc");
}


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

IE 你的程序有两种形式。从另一个表单调用关闭表单。向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();
}
于 2012-07-25T09:36:42.483 回答
0

或者,您可以使用 linq 之类的

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

WINDOW 是您要检查的窗口

于 2017-09-13T09:18:17.920 回答