2

自動化する必要のある古いレガシーアプリケーションがあります。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ウィンドウを前面に表示しませんでした。

何か案は?

4

1 に答える 1

1

フォーカスを設定する前に「BringToFront」を試しましたか? トップレベルのコントロール (mdi-parent) では、子 (mdi-child) が表示されていないときに子にフォーカスを当てることができないか、フォーカスできないと想像できます。

于 2010-04-26T06:22:02.527 に答える