获取所有打开的WPF窗口

时间:2012-08-29 11:42:27

标签: c# wpf windows

我正试图让所有打开的窗户。我尝试使用System.Windows.Application.Current.Windows,但我在foreach循环的行中得到了Null Pointer Exception。有谁知道出了什么问题?

public Window getWindow(String Title)
{
    Window windowObject = null;
    Console.WriteLine("Inside getWindow");
    foreach (Window window in System.Windows.Application.Current.Windows)
    {
        if (window.Title == Title)
        {
            windowObject = window;
        }
    }
    return windowObject;
}

3 个答案:

答案 0 :(得分:6)

这是在WPF中正在运行的应用程序中循环浏览所有打开的窗口的方法:

chart_Series

如果您想知道窗体使用应用程序而不是应用程序。 再见。

答案 1 :(得分:4)

CurrentWindowsnull

Windows property只能从创建Application对象的线程进行访问,这只能在创建应用程序对象后的WPF应用程序中使用。

答案 2 :(得分:1)

请记住,System.Windows是名称空间,而Application是引用当前应用程序上下文的实际类。这意味着'Application.Current.Windows'仅引用应用程序本身生成的所有窗口。尝试遍历所有窗口并打印标题。

在您的程序中发生的是,if语句将始终为false,除非Title等于Application生成的窗口,因此windowObject将保持为null,并且该方法将返回null。 p>