UI オートメーション Invoke コントロール パターンの実装
更新 : 2007 年 11 月
ここでは、イベントやプロパティに関する情報など、IInvokeProvider を実装するガイドラインと規則について説明します。追加参照へのリンクはトピックの最後に示します。
InvokePattern コントロール パターンは、アクティブになったときに状態を保持せずに単一の明確なアクションを開始または実行するコントロールをサポートするために使用されます。チェック ボックスやオプション ボタンなど状態を保持するコントロールは、代わりに IToggleProvider と ISelectionItemProvider をそれぞれ実装する必要があります。Invoke コントロール パターンを実装するコントロールの例については、「UI オートメーション クライアントのコントロール パターン マッピング」を参照してください。
このトピックには次のセクションが含まれています。
- 実装のガイドラインと規則
- IInvokeProvider の必須メンバ
- 例外
- 関連トピック
実装のガイドラインと規則
Invoke コントロール パターンを実装する場合は、次のガイドラインと規則に注意してください。
別のコントロール パターン プロバイダを通じて同じ動作が公開されていない場合、コントロールは IInvokeProvider を実装します。たとえば、コントロールの Invoke メソッドが Expand メソッドまたは Collapse メソッドと同じ処理を実行する場合、コントロールに IInvokeProvider を実装しないようにします。
通常、コントロールの呼び出しは、クリックまたはダブルクリックするか、Enter キー、定義済みのキーボード ショートカット、または何らかの代替的なキーの組み合わせを押すことによって実行されます。
(関連付けられたアクションを実行するコントロールへの応答として) アクティブ化されたコントロールで InvokedEvent が発生します。可能な場合は、コントロールがアクションを完了した後にイベントを発生させ、ブロックせずに戻す必要があります。Invoked イベントは、次のシナリオでは、Invoke 要求を処理する前に発生させる必要があります。
処理が完了するまで待機することができない、またはそうすることが実際的でない。
処理にユーザー操作が必要になる。
アクションに時間がかかり、呼び出し側のクライアントを長時間ブロックする。
コントロールの呼び出しに大きな副作用が伴う場合は、その副作用を、HelpText プロパティを介して公開する必要があります。たとえば、Invoke が選択に関連付けられていない場合でも、Invoke によって別のコントロールが選択された状態になることがあります。
ホバー (マウス オーバー) 効果は、一般に Invoked イベントを発生させません。ただし、ホバー状態に基づいて (視覚効果を発生させることなく) アクションを実行するコントロールは、InvokePattern コントロール パターンをサポートする必要があります。
メモ : |
---|
コントロールがマウス関連の副作用の結果としてのみ呼び出される場合、この実装はユーザー補助の問題と見なされます。 |
コントロールの呼び出しは、項目の選択とは異なります。ただし、コントロールによっては、その呼び出しの副作用として、項目が選択された状態になることがあります。たとえば、My Documents フォルダ内にある Microsoft Word ドキュメントのリスト項目を呼び出すと、その項目が選択され、ドキュメントが開きます。
要素は、呼び出されるとすぐに UI オートメーション ツリーから消えることがあります。その結果、イベント コールバックで指定された要素からの情報の要求が失敗する場合があります。推奨される回避策は、キャッシュされた情報をプリフェッチすることです。
コントロールは、複数のコントロール パターンを実装できます。たとえば、Microsoft Excel ツール バーの "塗りつぶしの色" コントロールは、InvokePattern コントロール パターンと ExpandCollapsePattern コントロール パターンを実装しています。ExpandCollapsePattern はメニューを公開し、InvokePattern は選択された色でアクティブな選択内容を塗りつぶします。
IInvokeProvider の必須メンバ
次のプロパティとメソッドは、IInvokeProvider の実装時に必要です。
必須メンバ |
メンバ型 |
説明 |
---|---|---|
メソッド |
Invoke は非同期呼び出しであるため、クライアントをブロックせずに、即座に制御を戻す必要があります。 呼び出されたときにモーダル ダイアログ ボックスを直接的または間接的に表示するコントロールでは、この動作は特に重要です。イベントを発生させたすべての UI オートメーション クライアントは、モーダル ダイアログ ボックスを閉じるまでブロックされたままになります。 |
例外
プロバイダは次の例外をスローする必要があります。
例外の種類 |
条件 |
---|---|
コントロールが有効ではない。 |
参照
処理手順
UI オートメーション プロバイダでのコントロール パターンのサポート