次の方法で共有


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

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

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

SelectionPattern コントロール パターンは、選択可能な子項目のコレクションのコンテナーとして機能するコントロールをサポートするために使用されます。 この要素の子要素は、ISelectionItemProviderを実装する必要があります。 このコントロール パターンを実装するコントロールの例については、「UI オートメーション クライアントのコントロール パターン マッピング 」を参照してください。

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

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

  • ISelectionProviderを実装するコントロールでは、1 つまたは複数の子項目を選択できます。 たとえば、リスト ボックス、リスト ビュー、ツリー ビューでは複数の選択がサポートされますが、コンボ ボックス、スライダー、ラジオ ボタン グループでは 1 つの選択がサポートされます。

  • 最小、最大、連続範囲を持つコントロール (音量スライダー コントロールなど) は、IRangeValueProviderではなくISelectionProviderを実装する必要があります。

  • IRawElementProviderFragmentRootを実装する子コントロールを管理する単一選択コントロール ([表示プロパティ] ダイアログ ボックスの [画面の解像度] スライダーや Microsoft Word の [カラー ピッカー] 選択コントロールなど) は、ISelectionProviderを実装する必要があります。子は、IRawElementProviderFragmentISelectionItemProviderの両方を実装する必要があります。

黄色が強調表示されたカラー ピッカー。 色見本文字列マッピングの例

  • メニューは SelectionPatternをサポートしていません。 グラフィックスとテキストの両方を含むメニュー項目 (Microsoft Outlook の [表示] メニューのプレビュー ウィンドウ項目など) を操作していて、状態を伝える必要がある場合は、IToggleProviderを実装する必要があります。

ISelectionProvider の必須メンバー

ISelectionProvider インターフェイスには、次のプロパティ、メソッド、およびイベントが必要です。

必須メンバー タイプ 注記
CanSelectMultiple プロパティ AddAutomationPropertyChangedEventHandlerRemoveAutomationPropertyChangedEventHandlerを使用してプロパティ変更イベントをサポートする必要があります。
IsSelectionRequired プロパティ AddAutomationPropertyChangedEventHandlerRemoveAutomationPropertyChangedEventHandlerを使用してプロパティ変更イベントをサポートする必要があります。
GetSelection メソッド 無し
InvalidatedEvent 出来事 コンテナー内の選択が大幅に変更され、 InvalidateLimit 定数で許可されているよりも多くの追加イベントと削除イベントを送信する必要がある場合に発生します。

IsSelectionRequiredプロパティとCanSelectMultipleプロパティは動的にすることができます。 たとえば、コントロールの初期状態では、 IsSelectionRequiredfalseされていることを示す項目が既定で選択されていない場合があります。 ただし、項目を選択した後、コントロールには常に少なくとも 1 つの項目が選択されている必要があります。 同様に、まれに、コントロールでは初期化時に複数の項目を選択できますが、その後は 1 つの選択のみが許可されます。

例外

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

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

こちらも参照ください