获取列表所有打开的MDI窗口

时间:2016-06-20 08:01:28

标签: c# winforms ui-automation mdi white

我想在c#中使用Teststack White和System.Windows.Automation自动化.NET WinForm应用程序。

MdiClient下一次有几个打开的窗口,我想获取在MdiClient下打开的所有子窗口的列表。

我试试:

 var window = application.GetWindows().Find(obj => obj.Title.StartsWith("Helios Green"));
 window.Focus(DisplayState.Maximized);

 AutomationElementCollection allChildren = 
      window.AutomationElement.FindAll(TreeScope.Children, 
      new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));

但是这会返回空集合,因为MdiChlidren Windows不是主窗口的直接子节点,但它们之间有一个MdiClient类名= WindowsForms10.MDICLIENT.app.0.33c0d9d,如Inspect中所示。

如何获取所有已打开的MDI子窗口的列表?

1 个答案:

答案 0 :(得分:0)

我能够解决这个问题:

AutomationElementCollection allChildren =
      window.AutomationElement.FindAll(TreeScope.Children, 
      new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Pane));
AutomationElementCollection subwindows = 
      allChildren[0].FindAll(TreeScope.Children, 
      new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));

MDIClient是主窗口中的第一个窗格。