我们有一个旧的遗留应用程序,我们需要自动化。 它使用MDI Windows。
我们正在使用UIAutomation,我可以成功为每个MDI子窗口获取相应的AutomationElement。 我不能做的就是把这个元素放在焦点上。
以下是我尝试过的一些示例代码:
var desktop = AutomationElement.RootElement;
var dolphin = desktop.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty,
"Dolphin for Windows",
PropertyConditionFlags.IgnoreCase));
dolphin.SetFocus();
var workspace = dolphin.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty,
"Workspace",
PropertyConditionFlags.None));
var childWindow = workspace.FindFirst(TreeScope.Children, new
PropertyCondition(AutomationElement.NameProperty, "Sharp "));
childWindow.SetFocus();
此代码中的最后一行因System.InvalidOperationException
而失败试验,我尝试在childWindow上找到一个控件,并在其上调用SetFocus。它DID正确地将焦点设置在右侧控件上,但它没有将MDI窗口置于前台。
有什么想法吗?
答案 0 :(得分:0)
在设置焦点之前,您是否尝试过“BringToFront”?我可以想象顶级控件(mdi-parent)不允许专注于孩子,或者当孩子(mdi-child)不可见时无法这样做。