【问题标题】:How do I bring Set Focus of MDI Child Window using UIAutomation如何使用 UIAutomation 设置 MDI 子窗口的焦点
【发布时间】:2010-07-02 20:00:51
【问题描述】:

我们有一个旧的旧应用程序需要自动化。 它使用 MDI 窗口。

我们正在使用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。它确实正确地将焦点设置在正确的控件上,但它没有将 MDI 窗口带到前台。

有什么想法吗?

【问题讨论】:

    标签: c# ui-automation


    【解决方案1】:

    您在设置焦点之前尝试过“BringToFront”吗?我可以想象顶级控件 (mdi-parent) 不允许关注子级或当子级 (mdi-child) 不可见时无法这样做。

    【讨论】:

    猜你喜欢
    • 2011-09-17
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多