次の方法で共有


UI オートメーション Invoke コントロール パターンの実装

Note

このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージド UI オートメーション クラスを使用する .NET Framework 開発者を対象としています。 UI オートメーションの最新情報については、Windows Automation API の「UI オートメーション」を参照してください。

このトピックでは、イベントおよびプロパティに関する情報など、 IInvokeProviderの実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、トピックの最後に記載します。

InvokePattern コントロール パターンは、アクティブになったときに状態を保持せずに単一の明確なアクションを開始または実行するコントロールをサポートするために使用されます。 チェック ボックスやオプション ボタンなどの状態を保持するコントロールは、代わりに IToggleProviderISelectionItemProvider をそれぞれ実装する必要があります。 Invoke コントロール パターンを実装するコントロールの例については、「 Control Pattern Mapping for UI Automation Clients」を参照してください。

実装のガイドラインと規則

Invoke コントロール パターンを実装する場合は、次のガイドラインと規則に注意してください。

  • 別のコントロール パターン プロバイダーを通じて同じ動作が公開されていない場合、コントロールは IInvokeProvider を実装します。 たとえば、コントロールの Invoke メソッドが Expand メソッドまたは Collapse メソッドと同じ処理を実行する場合、コントロールに IInvokeProviderを実装しないようにします。

  • 通常、コントロールの呼び出しは、クリックまたはダブルクリックするか、Enter キー、定義済みのキーボード ショートカット、または何らかの代替的なキーの組み合わせを押すことによって実行されます。

  • (関連付けられたアクションを実行したコントロールへの応答として) アクティブ化されたコントロールでInvokedEvent が生成されます。 可能な場合は、コントロールがアクションを完了し、ブロックせずに戻った後に、イベントを生成する必要があります。 次のシナリオでは、Invoke 要求を処理する前に Invoked イベントを生成する必要があります。

    • 処理が完了するまで待機することが不可能または非現実的である。

    • 処理にユーザー操作が必要になる。

    • アクションに時間がかかり、呼び出し側のクライアントを長時間ブロックする。

  • コントロールの呼び出しに大きな副作用が伴う場合は、その副作用を、 HelpText プロパティを介して公開する必要があります。 たとえば、 Invoke が選択に関連付けられていない場合でも、 Invoke によって別のコントロールが選択された状態になることがあります。

  • ホバー (マウス オーバー) 効果は、一般に Invoked イベントを発生させません。 ただし、ホバー状態に基づいて (視覚効果を発生させることなく) アクションを実行するコントロールは、 InvokePattern コントロール パターンをサポートする必要があります。

Note

マウス関連の副作用の結果として呼び出す以外にコントロールを呼び出す方法がない場合、そのような実装はユーザー補助に問題があるものと見なされます。

  • コントロールの呼び出しは、項目の選択とは異なります。 ただし、コントロールによっては、その呼び出しの副作用として、項目が選択された状態になることがあります。 たとえば、My Documents フォルダー内にある Microsoft Word 文書のリスト項目を呼び出すと、その項目が選択され、ドキュメントが開きます。

  • 要素は、呼び出されるとすぐに UI オートメーション ツリーから消える場合があります。 そのため、イベント コールバックで提供された要素に情報を要求すると失敗することがあります。 推奨される回避策は、キャッシュされた情報をプリフェッチすることです。

  • コントロールは、複数のコントロール パターンを実装できます。 たとえば、Microsoft Excel のツール バーの [塗りつぶしの色] コントロールでは、InvokePatternExpandCollapsePattern 両方のコントロール パターンが実装されています。 ExpandCollapsePattern はメニューを公開し、 InvokePattern は選択された色でアクティブな選択内容を塗りつぶします。

IInvokeProvider の必須メンバー

IInvokeProviderの実装には、次のプロパティとメソッドが必要です。

必須メンバー メンバーの型 メモ
Invoke method Invoke は非同期呼び出しであるため、クライアントをブロックせずに即座に戻る必要があります。

呼び出されたときにモーダル ダイアログを直接的または間接的に表示するコントロールでは、この動作は特に重要です。 イベントを発生させたすべての UI オートメーション クライアントは、モーダル ダイアログが閉じられるまで、ブロックされたままになります。

例外

プロバイダーは、次の例外をスローする必要があります。

例外の種類 条件
ElementNotEnabledException コントロールが有効でない場合。

関連項目