MenuItem コントロールの種類

このトピックでは、MenuItem コントロールの種類に対する Microsoft UI オートメーション のサポートについて説明します。

メニュー コントロールを使用すると、コマンドおよびイベント ハンドラーに関連付けられている要素を階層に編成できます。 一般的な Windows アプリケーションでは、メニュー バーにはいくつかのメニュー項目 ( ファイル編集ウィンドウなど) が含まれており、各メニュー項目にメニューが表示されます。 メニューには、メニュー項目 ( [新規][開く][閉じる]など) のコレクションが含まれていて、クリックされると展開して追加のメニュー項目を表示したり、特定の操作を実行したりできます。

次のセクションでは、MenuItem コントロール型に必要なUI オートメーションツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。 UI オートメーションの要件は、UI フレームワーク/プラットフォームがコントロールの種類とコントロール パターンUI オートメーションサポートを統合するすべてのメニュー項目コントロールに適用されます。

このトピックは、次のセクションで構成されています。

一般的なツリー構造

次の表は、メニュー項目コントロールに関連するUI オートメーション ツリーの一般的なコントロールとコンテンツ ビューを示し、各ビューに含めることができる内容を示しています。 UI オートメーション ツリーの詳細については、「UI オートメーション ツリーの概要」を参照してください。

コントロール ビュー コンテンツ ビュー
  • MenuItem "Help"
    • メニュー ([ヘルプ] メニュー項目のサブメニュー)
      • MenuItem "Help Topics"
      • MenuItem "About Notepad"
  • MenuItem "Help"
    • MenuItem "Help Topics"
    • MenuItem "About Notepad"

 

メニュー項目コントロールのコントロール ビューには、上記の UI オートメーション ツリー構造があります。 メニュー バーの ヘルプ のメニュー項目が追加され、構造の説明がわかりやすくなったことに注意してください。

コンテンツ ビューの場合、メニューはエンド ユーザーに意味のある情報を伝達しないため、UI オートメーション ツリーには存在しません。

関連するプロパティ

次の表に、値または定義が MenuItem コントロール型に特に関連するUI オートメーションプロパティの一覧を示します。 UI オートメーションプロパティの詳細については、「UI オートメーション要素からプロパティを取得する」を参照してください。

UI Automation のプロパティ メモ
UIA_AutomationIdPropertyId 「ノート」を参照してください。 このプロパティの値は、UI オートメーション ツリーの生ビュー内のすべてのピア要素間で一意である必要があります。 要素がユーザー インターフェイスの異なるインスタンス間で一貫性があることがわかっている場合は、メニュー項目に AutomationId プロパティを割り当てます。 メニュー項目が動的に設定され、予測できない場合は、 AutomationId プロパティを空白のままにします。
UIA_BoundingRectanglePropertyId 「ノート」を参照してください。 コントロール全体を格納する最も外側の四角形。
UIA_ClickablePointPropertyId 「ノート」を参照してください。 四角形領域が存在する場合にサポートされます。 外接する四角形内のすべてのポイントがクリック可能でなく、要素が特殊なヒット テストを実行する場合は、オーバーライドしてクリック可能なポイントを指定します。
UIA_ControlTypePropertyId MenuItem
UIA_IsContentElementPropertyId true メニュー項目コントロールは、常にUI オートメーション ツリーのコンテンツ ビューに含まれます。
UIA_IsControlElementPropertyId true メニュー項目コントロールは、常にUI オートメーション ツリーのコントロール ビューに含まれます。
UIA_IsKeyboardFocusablePropertyId 「ノート」を参照してください。 コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。
UIA_LocalizedControlTypePropertyId 「ノート」を参照してください。 MenuItem コントロール型に対応するローカライズされた文字列。 既定値は、en-US または英語 (米国) の "メニュー項目" です。
UIA_NamePropertyId 「ノート」を参照してください。 メニュー項目コントロールの名前は、ラベル付けに使用されるテキストです。

 

必須のコントロール パターン

次の表に、メニュー項目コントロールでサポートされる必要がある UI オートメーション コントロール パターンを示します。 コントロール パターンの詳細については、「 UI Automation Control Patterns Overview」を参照してください。

コントロール パターン サポート Notes
IExpandCollapseProvider 依存 コントロールを展開または折りたたむことができる場合は、 IExpandCollapseProvider を実装します
IInvokeProvider 依存 コントロールが単一のアクションまたはコマンドを実行する場合は、 IInvokeProvider を実装します
ISelectionItemProvider 依存 コントロールを使用してメニュー項目のオプションの一覧から選択する場合は、 ISelectionItemProvider を実装します。
IToggleProvider 依存 コントロールがオンまたはオフにできるオプションを表す場合は、 IToggleProvider を実装します

 

必須イベント

次の表に、メニュー項目コントロールがサポートするために必要なUI オートメーション イベントの一覧を示します。 イベントの詳細については、「 UI Automation Events Overview」を参照してください。

UI オートメーション イベント メモ
UIA_AutomationFocusChangedEventId
プロパティ変更イベントUIA_BoundingRectanglePropertyId
プロパティ変更イベントUIA_ExpandCollapseExpandCollapseStatePropertyIdします。 コントロールが ExpandCollapse コントロール パターンをサポートしている場合は、このイベントをサポートする必要があります。
UIA_Invoke_InvokedEventId コントロールが Invoke コントロール パターンをサポートしている場合は、このイベントをサポートする必要があります。
プロパティ変更イベントUIA_IsEnabledPropertyId コントロールが IsEnabled プロパティをサポートしている場合は、このイベントをサポートする必要があります。
プロパティ変更イベントUIA_IsOffscreenPropertyId コントロールが IsOffscreen プロパティをサポートしている場合は、このイベントをサポートする必要があります。
UIA_SelectionItem_ElementAddedToSelectionEventId コントロールが SelectionItem コントロール パターンをサポートしている場合は、このイベントをサポートする必要があります。
UIA_SelectionItem_ElementRemovedFromSelectionEventId コントロールが SelectionItem コントロール パターンをサポートしている場合は、このイベントをサポートする必要があります。
UIA_SelectionItem_ElementSelectedEventId コントロールが SelectionItem コントロール パターンをサポートしている場合は、このイベントをサポートする必要があります。
UIA_StructureChangedEventId
プロパティ変更イベントUIA_ToggleToggleStatePropertyIdします。 コントロールが トグル コントロール パターンをサポートしている場合は、このイベントをサポートする必要があります。

 

既知の問題

Microsoft Win32 メニュー項目の場合、 トグル コントロール パターンは、メニュー項目がチェックされている場合にのみサポートされ、トグル コントロール パターンのサポートが必要かどうかをプログラムで判断できます。 Win32 メニュー項目はチェックできるかどうかは公開されないため、メニュー項目がチェックされていない場合は、呼び出しコントロール パターンがサポートされます。 コントロールの呼び出しパターンは、トグル コントロール パターンをサポートするためにのみ必要なメニュー項目の場合でも、常にサポートされます。 これは、 Invoke コントロール パターンをサポートしていたメニュー項目 (メニュー項目がオフの場合) がチェックされたときにそのパターンをサポートしなくなった場合に、クライアントが混乱しないようにするためです。

概念

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

UI オートメーションの概要