次の方法で共有


UI オートメーション呼び出しコントロール パターンの実装

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

このトピックでは、イベントとプロパティに関する情報など、 IInvokeProviderを実装するためのガイドラインと規則について説明します。 その他の参照へのリンクは、トピックの最後に一覧表示されます。

InvokePattern コントロール パターンは、アクティブ化されたときに状態を維持せず、単一の明確なアクションを開始または実行するコントロールをサポートするために使用されます。 チェック ボックスやラジオ ボタンなどの状態を維持するコントロールは、それぞれ IToggleProviderISelectionItemProvider を実装する必要があります。 Invoke コントロール パターンを実装するコントロールの例については、「 UI オートメーション クライアントのコントロール パターン マッピング」を参照してください。

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

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

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

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

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

    • アクションが完了するまで待機することはできません。または実用的ではありません。

    • アクションにはユーザーの操作が必要です。

    • このアクションには時間がかかり、呼び出し元のクライアントが長時間ブロックされます。

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

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

この実装は、マウス関連の副作用の結果としてのみコントロールを呼び出すことができる場合、アクセシビリティの問題と見なされます。

  • コントロールの呼び出しは、項目の選択とは異なります。 ただし、コントロールによっては、それを呼び出すと、項目が副作用として選択される可能性があります。 たとえば、[マイ ドキュメント] フォルダーで Microsoft Word 文書リスト アイテムを呼び出すと、アイテムが選択され、文書が開きます。

  • 要素は、呼び出されるとすぐに UI オートメーション ツリーから消える可能性があります。 イベント コールバックによって提供される要素からの情報の要求は、結果として失敗する可能性があります。 キャッシュされた情報を事前にフェッチすることをお勧めします。

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

IInvokeProvider の必須メンバー

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

必須メンバー メンバーの種類 注記
Invoke 方式 Invoke は非同期呼び出しであり、ブロックせずにすぐに戻る必要があります。

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

例外

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

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

こちらも参照ください