2016-06-20 92 views
0

我想使用Teststack White和System.Windows.Automation在c#中自動化.NET WinForm應用程序。獲取列表中所有打開的MDI窗口

有一次在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之間,如在檢查。

如何獲取所有打開的MDI子窗口的列表?

回答

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是在主窗口中的第一個窗格。