UI オートメーション コントロール パターンの概要

Note

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

この概要では、Microsoft UI オートメーション コントロール パターンについて説明します。 コントロール パターンは、コントロール型や外観に関係なく、コントロールの機能を分類したり公開したりするための手段です。

UI オートメーションは、コントロールの一般的な動作を表すコントロール パターンを使用します。 たとえば、呼び出し可能なコントロール (ボタンなど) には Invoke コントロール パターンを使用し、スクロール バーを持つコントロール (リスト ボックス、リスト ビュー、コンボ ボックスなど) には Scroll コントロール パターンを使用します。 コントロール パターンごとに別の機能を表すため、コントロール パターンを組み合わせて、特定のコントロールでサポートされる機能の完全なセットを表すことができます。

Note

集約コントロール (親によって公開される機能のためにユーザー インターフェイス (UI) を提供する子コントロールで構築されるもの) は、各子コントロールに通常関連付けられるすべてのコントロール パターンを実装する必要があります。 一方、これらの同じコントロール パターンを子コントロールで実装する必要はありません。

UI オートメーションのコントロール パターン コンポーネント

コントロール パターンは、コントロールで使用可能な機能の個々の部分を定義するために必要なメソッド、プロパティ、イベント、およびリレーションシップをサポートします。

  • UI オートメーション要素とその親、子、兄弟との間の関係によって、UI オートメーション ツリー内の要素の構造を記述します。

  • メソッドは、UI オートメーション クライアントがコントロールを操作できるようにします。

  • プロパティとイベントは、コントロール パターンの機能に関する情報だけでなく、コントロールの状態に関する情報も提供します。

コントロール パターンと UI の関係は、インターフェイスとコンポーネント オブジェクト モデル (COM) オブジェクトの関係に似ています。 COM では、サポートしているインターフェイスをオブジェクトに問い合わせて、それらのインターフェイスを使って機能にアクセスできます。 UI オートメーションでは、UI オートメーション クライアントは、サポートされるコントロール パターンをコントロールに対して確認し、サポートされているコントロール パターンによって公開されているプロパティ、メソッド、イベント、構造体を使用してコントロールとやり取りすることができます。 たとえば、複数行のエディット ボックスでは、UI オートメーション プロバイダーは IScrollProviderを実装します。 クライアントは、 AutomationElementScrollPattern コントロール パターンをサポートしていることを認識すると、そのコントロール パターンによって公開されているプロパティ、メソッド、イベントを使用して、コントロールを操作したり、コントロールに関する情報にアクセスしたりできます。

UI オートメーションのプロバイダーおよびクライアント

UI オートメーション プロバイダーは、コントロール パターンを実装して、コントロールによってサポートされる特定の機能の適切な動作を公開します。

UI オートメーション クライアントは、UI オートメーション コントロール パターン クラスのメソッドとプロパティにアクセスし、それらを使用して UI に関する情報を取得したり、UI を操作したりします。 これらのコントロール パターン クラスは、 System.Windows.Automation 名前空間 (たとえば、 InvokePatternSelectionPattern) にあります。

クライアントは AutomationElement メソッド (AutomationElement.GetCurrentPropertyValueAutomationElement.GetCachedPropertyValue など) または共通言語ランタイム (CLR) アクセサーを使用して、パターン上の UI オートメーション プロパティにアクセスします。 各コントロール パターン クラスには、そのコントロール パターンを識別するフィールド メンバー (たとえば、InvokePattern.Pattern または SelectionPattern.Pattern) があります。それらをパラメーターとして GetCachedPattern または GetCurrentPattern に渡して、AutomationElement のそのパターンを取得することができます。

動的コントロール パターン

一部のコントロールでは、コントロール パターンの同じセットを必ずしもサポートしません。 コントロール パターンは、UI オートメーション クライアントから使用できる場合に、サポートされていると見なされます。 たとえば、複数行のエディット ボックスでは、表示可能領域に表示できる行以上のテキストが含まれている場合にのみ、垂直スクロールが有効にされます。 テキストが削除されスクロールする必要がなくなると、スクロールは無効になります。 この例では、ScrollPattern コントロール パターンは、コントロールの現在の状態 (エディット ボックスのテキストの量) に応じて動的にサポートされます。

コントロール パターン クラスとインターフェイス

UI オートメーション コントロール パターンについて次の表で説明します。 またこの表には、コントロール パターンにアクセスするために UI オートメーション クライアントで使用するクラスと、それらを実装するために UI オートメーション プロバイダーで使用するインターフェイスも示します。

コントロール パターン クラス プロバイダーのインターフェイス 説明
DockPattern IDockProvider ドッキング コンテナーにドッキングすることができるコントロールに使用されます。 たとえば、ツールバーやツール パレットです。
ExpandCollapsePattern IExpandCollapseProvider 展開したり折りたたんだりできるコントロールに使用されます。 たとえば、 [ファイル] メニューなどアプリケーションのメニュー項目。
GridPattern IGridProvider サイズ変更や指定したセルへの移動などグリッド機能をサポートするコントロールに使用されます。 たとえば、Windows エクスプローラーの大きいアイコンの表示や Microsoft Word のヘッダーのない簡単な表。
GridItemPattern IGridItemProvider グリッド内にセルを持つコントロールに使用されます。 個々のセルは GridItem パターンをサポートしている必要があります。 たとえば、Microsoft Windows エクスプローラーの詳細ビューの各セルです。
InvokePattern IInvokeProvider ボタンなど、呼び出すことができるコントロールに使用されます。
MultipleViewPattern IMultipleViewProvider 情報、データ、子の同じセットの複数の表現の間で切り替えることができるコントロールに使用されます。 たとえば、サムネイル、タイル、アイコン、リスト、詳細ビューでデータを使用できるリスト ビュー コントロール。
RangeValuePattern IRangeValueProvider コントロールに適用できる値の範囲を持つコントロールに使用されます。 たとえば、年を含むスピン ボックス コントロールは 1900 から 2010 の範囲を持ち、月を表すスピン ボックス コントロールは 1 から 12 の範囲を持ちます。
ScrollPattern IScrollProvider スクロールできるコントロールに使用されます。 たとえば、コントロールの表示可能領域に表示できる量より多くの情報があるとアクティブになるスクロール バーを持つコントロール。
ScrollItemPattern IScrollItemProvider スクロールされるリスト内に個々の項目を持つコントロールに使用されます。 たとえば、コンボ ボックス コントロールなどスクロール リストに個々の項目を持つリスト コントロール。
SelectionPattern ISelectionProvider 選択コンテナー コントロールに使用されます。 たとえば、リスト ボックスやコンボ ボックス。
SelectionItemPattern ISelectionItemProvider リスト ボックスやコンボ ボックスなどの選択コンテナー コントロールの個々の項目に使用されます。
TablePattern ITableProvider グリッドとヘッダー情報を持つコントロールに使用されます。 たとえば、Microsoft Excel のワークシートです。
TableItemPattern ITableItemProvider テーブル内の項目に使用されます。
TextPattern ITextProvider テキストの情報を公開するエディット コントロールとドキュメントに使用されます。
TogglePattern IToggleProvider 状態を切り替えることができるコントロールに使用されます。 たとえば、チェック ボックスやチェック可能なメニュー項目。
TransformPattern ITransformProvider サイズ変更、移動、または回転を行えるコントロールに使用されます。 Transform コントロール パターンの一般的な用途は、デザイナー、フォーム、グラフィカル エディター、および描画アプリケーションでの使用です。
ValuePattern IValueProvider クライアントで、値の範囲をサポートしないコントロールで値を取得したり、設定したりできます。 たとえば、日時指定のピッカーなどがあります。
WindowPattern IWindowProvider ウィンドウ固有の情報を公開します。ウィンドウは、Microsoft Windows オペレーティング システムの基本概念です。 ウィンドウであるコントロールの例として、最上位のアプリケーション ウィンドウ (Microsoft Word や Microsoft Windows Explorer など)、マルチドキュメント インターフェイス (MDI) 子ウィンドウ、ダイアログがあります。

関連項目