MenuItem クラス
アセンブリ: System.Web (system.web.dll 内)


Menu コントロールは、MenuItem オブジェクトによって表されるメニュー項目の階層で構成されます。各メニュー項目には、Menu コントロール内でのそのメニュー項目の表示レベルを指定する、読み取り専用の Depth プロパティがあります。親メニュー項目を持たない最上位 (レベル 0) のメニュー項目をルート メニュー項目と呼びます。親メニュー項目を持つメニュー項目をサブメニュー項目と呼びます。すべてのルート メニュー項目は Items コレクションに格納されます。サブメニュー項目は、親メニュー項目の ChildItems コレクションに格納されます。メニュー項目の親メニュー項目には、Parent プロパティを使用してアクセスできます。
![]() |
---|
Items コレクションと ChildItems コレクションには、1 つ下のレベルのメニュー項目だけが含まれます。メニュー ツリーのさらに下のメニュー項目にアクセスするには、後続のメニュー項目の ChildItems プロパティを使用します。 |
Menu コントロールのメニュー項目を作成するには、次のいずれかのメソッドを使用します。
コンストラクタを使用して、MenuItem クラスの新しいインスタンスを動的に作成します。後で、これらの MenuItem オブジェクトを Items コレクションまたは ChildItems コレクションに追加できます。
Menu コントロールをデータ ソースにバインドします。Menu コントロールが SiteMapDataSource コントロールにバインドされると、データ ソース内の項目に対応する MenuItem オブジェクトが自動的に作成されます。他のデータ ソースについても、データ ソースの階層構造に一致する MenuItem オブジェクトが自動的に作成されます。ただし DataBindings コレクションを使用してメニュー項目のバインディングを定義し、メニュー項目とそれに対応するデータ項目の間のバインディング関係を指定することも必要です。
メニュー項目はそのレベルに従って、静的メニューまたは動的メニューのどちらかに表示されます。静的メニューは常に Menu コントロールに表示されます。既定では、最上位 (レベル 0) のメニュー項目は静的メニューに表示されます。StaticDisplayLevels プロパティを設定して、静的メニューにメニュー レベル (静的サブメニュー) を追加表示できます。StaticDisplayLevels プロパティで指定されている値よりも高いレベルのメニュー項目がある場合、それは動的なサブメニューに表示されます。動的なサブメニューは、動的なサブメニューを持つ親メニュー項目の上にユーザーがマウス ポインタを置いた場合にのみ表示されます。
ユーザーがメニュー項目をクリックすると、Menu コントロールはリンクされた Web ページにナビゲートするか、単純にサーバーにポストバックします。メニュー項目の NavigateUrl プロパティが設定されている場合、Menu コントロールはリンクされたページにナビゲートします。それ以外の場合は、処理を行うためにページをサーバーにポストバックします。既定では、リンクされたページは Menu コントロールと同じウィンドウまたは枠に表示されます。リンクされたコンテンツを別のウィンドウまたは枠に表示するには、Menu コントロールの Target プロパティを使用します。
![]() |
---|
Menu.Target プロパティは、コントロールのすべてのメニュー項目に影響します。メニュー項目ごとにウィンドウまたは枠を指定するには、MenuItem オブジェクトの Target プロパティを直接設定します。 |
メニュー項目ごとに Text と Value プロパティがあります。メニュー項目に関連付けられているポストバック イベントに渡されるデータなど、メニュー項目に関する補足データを格納するために Value プロパティが使用されている間、Text プロパティの値は Menu コントロールに表示されます。Text プロパティを設定し、Value プロパティを設定しないと、Value プロパティには Text プロパティと同じ値が自動的に設定されます。その反対も同様です。Value プロパティを設定し、Text プロパティを設定しないと、Text プロパティには Value プロパティと同じ値が自動的に設定されます。
![]() |
---|
同じメニュー レベルにあるメニュー項目は、それぞれの Value プロパティの値が一意であることが必要です。同一レベルの複数のメニュー項目でこの値が同じであると、Menu コントロールは各メニュー項目を区別できません。この場合、重複した値を持つメニュー項目をユーザーがクリックすると、最初にメニューに表示されているメニュー項目が選択されます。 |
ユーザーがマウス ポインタをメニュー項目の上に置いたときにツールヒントを表示するには、その項目の ToolTip プロパティを設定します。
Menu コントロールには、さまざまな種類のメニュー項目があります。次の表に示すプロパティを使用して、メニュー項目の種類ごとにフォント サイズや色などのスタイルを制御できます。
DynamicHoverStyle | |
DynamicMenuItemStyle | |
DynamicMenuStyle | |
DynamicSelectedStyle | |
StaticHoverStyle | |
StaticMenuItemStyle | |
StaticMenuStyle | |
StaticSelectedStyle |
スタイルのプロパティを個々に設定する代わりに、次の表に示すスタイル コレクションを使用して、レベルに基づいてメニュー項目に適用するスタイルを指定できます。
LevelMenuItemStyles | |
LevelSelectedStyles | |
LevelSubMenuStyles |
このコレクションの中の最初のスタイルは、メニュー ツリーの 1 番目の深さレベルにあるメニュー項目のスタイルに対応します。このコレクションの中の 2 番目のスタイルは、メニュー ツリーの 2 番目の深さレベルにあるメニュー項目のスタイルに対応し、以下同様に対応します。サブメニューの有無にかかわらず、一定の深さレベルにあるメニュー項目の外観を同じにする場合は、この方法でコンテンツ-スタイルのナビゲーション メニューのテーブルを生成するのが最も一般的です。
![]() |
---|
前述のテーブルにリストされているスタイル レベルのコレクションを使用して Menu コントロールのスタイルを定義すると、それらのスタイル設定が、個々のメニュー項目のスタイルのプロパティをオーバーライドします。 |
メニュー項目のスタイルだけでなく、その外観もカスタマイズできます。次の表に示すプロパティを設定して、メニュー項目の部分ごとにカスタム イメージを指定できます。
ImageUrl | |
PopOutImageUrl | |
SeparatorImageUrl |
Menu コントロールでメニュー項目が現在選択されているかどうかを確認するには、Selected プロパティを使用します。DataBound プロパティを使用して、メニュー項目がデータにバインドされているかどうかを確認することもできます。メニュー項目がデータにバインドされている場合は、DataItem プロパティを使用して、メニュー項目にバインドされたデータ項目の値にアクセスできます。
MenuItem クラスのインスタンスの初期プロパティ値の一覧については、MenuItem コンストラクタのトピックを参照してください。

宣言構文を使用して、静的な MenuItem オブジェクトの Menu コントロールを作成する方法のコード例を次に示します。
<%@ Page Language="VB" %> <html> <body> <form runat="server"> <h3>MenuItem Declarative Example</h3> <!-- Use declarative syntax to create the --> <!-- menu structure. Create submenu items --> <!-- by nesting them within parent menu --> <!-- items. --> <asp:menu id="NavigationMenu" staticdisplaylevels="1" staticsubmenuindent="10" orientation="Vertical" target="_blank" runat="server"> <items> <asp:menuitem navigateurl="Home.aspx" text="Home" imageurl="Images\Home.gif" popoutimageurl="Images\Popout.jpg" tooltip="Home"> <asp:menuitem navigateurl="Music.aspx" text="Music" popoutimageurl="Images\Popout.jpg" tooltip="Music"> <asp:menuitem navigateurl="Classical.aspx" text="Classical" separatorimageurl="Images\Separator.jpg" tooltip="Classical"/> <asp:menuitem navigateurl="Rock.aspx" text="Rock" separatorimageurl="Images\Separator.jpg" tooltip="Rock"/> <asp:menuitem navigateurl="Jazz.aspx" text="Jazz" separatorimageurl="Images\Separator.jpg" tooltip="Jazz"/> </asp:menuitem> <asp:menuitem navigateurl="Movies.aspx" text="Movies" popoutimageurl="Images\Popout.jpg" tooltip="Movies"> <asp:menuitem navigateurl="Action.aspx" text="Action" separatorimageurl="Images\Separator.jpg" tooltip="Action"/> <asp:menuitem navigateurl="Drama.aspx" text="Drama" separatorimageurl="Images\Separator.jpg" tooltip="Drama"/> <asp:menuitem navigateurl="Musical.aspx" text="Musical" separatorimageurl="Images\Separator.jpg" tooltip="Musical"/> </asp:menuitem> </asp:menuitem> </items> </asp:menu> </form> </body> </html>
<%@ Page Language="C#" %> <html> <body> <form runat="server"> <h3>MenuItem Declarative Example</h3> <!-- Use declarative syntax to create the --> <!-- menu structure. Create submenu items --> <!-- by nesting them within parent menu --> <!-- items. --> <asp:menu id="NavigationMenu" staticdisplaylevels="1" staticsubmenuindent="10" orientation="Vertical" target="_blank" runat="server"> <items> <asp:menuitem navigateurl="Home.aspx" text="Home" imageurl="Images\Home.gif" popoutimageurl="Images\Popout.jpg" tooltip="Home"> <asp:menuitem navigateurl="Music.aspx" text="Music" popoutimageurl="Images\Popout.jpg" tooltip="Music"> <asp:menuitem navigateurl="Classical.aspx" text="Classical" separatorimageurl="Images\Separator.jpg" tooltip="Classical"/> <asp:menuitem navigateurl="Rock.aspx" text="Rock" separatorimageurl="Images\Separator.jpg" tooltip="Rock"/> <asp:menuitem navigateurl="Jazz.aspx" text="Jazz" separatorimageurl="Images\Separator.jpg" tooltip="Jazz"/> </asp:menuitem> <asp:menuitem navigateurl="Movies.aspx" text="Movies" popoutimageurl="Images\Popout.jpg" tooltip="Movies"> <asp:menuitem navigateurl="Action.aspx" text="Action" separatorimageurl="Images\Separator.jpg" tooltip="Action"/> <asp:menuitem navigateurl="Drama.aspx" text="Drama" separatorimageurl="Images\Separator.jpg" tooltip="Drama"/> <asp:menuitem navigateurl="Musical.aspx" text="Musical" separatorimageurl="Images\Separator.jpg" tooltip="Musical"/> </asp:menuitem> </asp:menuitem> </items> </asp:menu> </form> </body> </html>
Menu コントロールを SiteMapDataSource コントロールにバインドする方法のコード例を次に示します。Menu コントロールはデータ ソースにバインドされると、MenuItem オブジェクトを自動的に作成します。この例を正常に動作させるには、以下のサンプル サイト マップ データを、Web.sitemap という名前のファイルにコピーする必要があります。
<%@ Page Language="VB" %> <html> <!-- For the hover styles of the Menu control to --> <!-- work correctly, you must include this head --> <!-- element. --> <head runat="server"> </head> <body> <form runat="server"> <h3>Menu DataBinding Example</h3> <!-- Bind the Menu control to a SiteMapDataSource control. --> <asp:menu id="NavigationMenu" disappearafter="2000" staticdisplaylevels="2" staticsubmenuindent="10" orientation="Vertical" font-names="Arial" target="_blank" datasourceid="MenuSource" runat="server"> <staticmenuitemstyle backcolor="LightSteelBlue" forecolor="Black"/> <statichoverstyle backcolor="LightSkyBlue"/> <dynamicmenuitemstyle backcolor="Black" forecolor="Silver"/> <dynamichoverstyle backcolor="LightSkyBlue" forecolor="Black"/> </asp:menu> <asp:SiteMapDataSource id="MenuSource" runat="server"/> </form> </body> </html>
<%@ Page Language="C#" %> <html> <!-- For the hover styles of the Menu control to --> <!-- work correctly, you must include this head --> <!-- element. --> <head runat="server"> </head> <body> <form runat="server"> <h3>Menu DataBinding Example</h3> <!-- Bind the Menu control to a SiteMapDataSource control. --> <asp:menu id="NavigationMenu" disappearafter="2000" staticdisplaylevels="2" staticsubmenuindent="10" orientation="Vertical" font-names="Arial" target="_blank" datasourceid="MenuSource" runat="server"> <staticmenuitemstyle backcolor="LightSteelBlue" forecolor="Black"/> <statichoverstyle backcolor="LightSkyBlue"/> <dynamicmenuitemstyle backcolor="Black" forecolor="Silver"/> <dynamichoverstyle backcolor="LightSkyBlue" forecolor="Black"/> </asp:menu> <asp:SiteMapDataSource id="MenuSource" runat="server"/> </form> </body> </html>
<siteMap>
<siteMapNode url="~\Home.aspx"
description="Home">
<siteMapNode url="~\Music.aspx"
description="Music">
<siteMapNode url="~\Classical.aspx"
description="Classical"/>
<siteMapNode url="~\Rock.aspx"
description="Rock"/>
<siteMapNode url="~\Jazz.aspx"
description="Jazz"/>
</siteMapNode>
<siteMapNode url="~\Movies.aspx"
<siteMapNode url="~\Action.aspx"
description="Action"/>
<siteMapNode url="~\Drama.aspx"
description="Drama"/>
<siteMapNode url="~\Musical.aspx"
description="Musical"/>
</siteMapNode>
</siteMapNode>
</siteMap>


System.Web.UI.WebControls.MenuItem


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


MenuItem クラス
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)


MenuItem を表示するには、MainMenu または ContextMenu に追加する必要があります。サブメニューを作成するには、MenuItem オブジェクトを親 MenuItem の MenuItems プロパティに追加します。
MenuItem クラスには、メニュー項目の外観と機能を設定するためのプロパティがあります。メニュー項目の横にチェック マークを表示するには、Checked プロパティを使用します。この機能を使用すると、一度に 1 つしか選択できない複数のメニュー項目の中で、選択されている 1 つのメニュー項目を識別できます。たとえば、TextBox コントロールのテキストの色を設定するメニュー項目が複数ある場合、Checked プロパティを使用して、現在選択されている色を識別できます。Shortcut プロパティを使用すると、組み合わせて押すことによってメニュー項目を選択できるショートカット キーを定義できます。
マルチ ドキュメント インターフェイス (MDI: Multiple Document Interface) アプリケーションに表示される MenuItem オブジェクトの場合、MergeMenu メソッドを使用して、MDI 親のメニューと、その子フォームのメニューをマージし、統合したメニュー構造を作成できます。MenuItem は、複数の場所 (MainMenu と ContextMenu など) で同時には使用できないため、別の場所で使用する場合は、CloneMenu メソッドを使用して MenuItem のコピーを作成できます。
Popup イベントを使用すると、メニューを表示する前にタスクを実行できるようになります。たとえば、このイベントを処理するイベント ハンドラを作成し、コードの状態に基づいてメニュー項目を表示したり非表示にしたりできます。Select イベントを使用すると、ユーザーがアプリケーションのメニュー項目上にマウス ポインタを置いたときに、その項目に関する詳しいヘルプを表示するなどのタスクを実行できます。

フォームで使用するメニュー構造を作成するコード例を次に示します。この例では、トップレベル メニューの項目を表す MenuItem を追加して、フォント サイズを選択するためのサブメニュー項目を追加します。さらに、そのサブメニュー項目にアプリケーションの大小のフォントの選択肢を表す 2 つのサブメニュー項目を追加します。この例では、mainMenu1 という名前の MainMenu オブジェクト、および menuItem1、menuItem2、menuItem3、menuItem4 という名前の 4 つの MenuItem オブジェクトが作成されている必要があります。
Public Sub CreateMyMenu() ' Set the caption for the top-level menu item. menuItem1.Text = "Edit" ' Set the caption for the first submenu. menuItem2.Text = "Font Size" ' Set the caption for menuItem2's first submenu. menuItem3.Text = "Small" ' Set the checked property to true since this is the default value. menuItem3.Checked = True ' Define a shortcut key combination for the menu item. menuItem3.Shortcut = Shortcut.CtrlS ' Set the caption of the second sub menu item of menuItem2. menuItem4.Text = "Large" ' Define a shortcut key combination for the menu item. menuItem4.Shortcut = Shortcut.CtrlL ' Set the index of the menu item so it is placed below the first submenu item. menuItem4.Index = 1 ' Add menuItem3 and menuItem4 to menuItem2's list of menu items. menuItem2.MenuItems.Add(menuItem3) menuItem2.MenuItems.Add(menuItem4) ' Add menuItem2 to menuItem1's list of menu items. menuItem1.MenuItems.Add(menuItem2) ' Add menuItem1 to the MainMenu for displaying. mainMenu1.MenuItems.Add(menuItem1) End Sub
public void CreateMyMenu() { // Set the caption for the top-level menu item. menuItem1.Text = "Edit"; // Set the caption for the first submenu. menuItem2.Text = "Font Size"; // Set the caption for menuItem2's first submenu. menuItem3.Text = "Small"; // Set the checked property to true since this is the default value. menuItem3.Checked = true; // Define a shortcut key combination for the menu item. menuItem3.Shortcut = Shortcut.CtrlS; // Set the caption of the second sub menu item of menuItem2. menuItem4.Text = "Large"; // Define a shortcut key combination for the menu item. menuItem4.Shortcut = Shortcut.CtrlL; // Set the index of the menu item so it is placed below the first submenu item. menuItem4.Index = 1; // Add menuItem3 and menuItem4 to menuItem2's list of menu items. menuItem2.MenuItems.Add(menuItem3); menuItem2.MenuItems.Add(menuItem4); // Add menuItem2 to menuItem1's list of menu items. menuItem1.MenuItems.Add(menuItem2); // Add menuItem1 to the MainMenu for displaying. mainMenu1.MenuItems.Add(menuItem1); }
public: void CreateMyMenu() { // Set the caption for the top-level menu item. menuItem1->Text = "Edit"; // Set the caption for the first submenu. menuItem2->Text = "Font Size"; // Set the caption for menuItem2's first submenu. menuItem3->Text = "Small"; // Set the checked property to true since this is the default value. menuItem3->Checked = true; // Define a shortcut key combination for the menu item. menuItem3->Shortcut = Shortcut::CtrlS; // Set the caption of the second sub menu item of menuItem2. menuItem4->Text = "Large"; // Define a shortcut key combination for the menu item. menuItem4->Shortcut = Shortcut::CtrlL; // Set the index of the menu item so it is placed below the first submenu item. menuItem4->Index = 1; // Add menuItem3 and menuItem4 to menuItem2's list of menu items. menuItem2->MenuItems->Add( menuItem3 ); menuItem2->MenuItems->Add( menuItem4 ); // Add menuItem2 to menuItem1's list of menu items. menuItem1->MenuItems->Add( menuItem2 ); // Add menuItem1 to the MainMenu for displaying. mainMenu1->MenuItems->Add( menuItem1 ); }
public void CreateMyMenu() { // Set the caption for the top-level menu item. menuItem1.set_Text("Edit"); // Set the caption for the first submenu. menuItem2.set_Text("Font Size"); // Set the caption for menuItem2's first submenu. menuItem3.set_Text("Small"); // Set the checked property to true since this is the default value. menuItem3.set_Checked(true); // Define a shortcut key combination for the menu item. menuItem3.set_Shortcut(Shortcut.CtrlS); // Set the caption of the second sub menu item of menuItem2. menuItem4.set_Text("Large"); // Define a shortcut key combination for the menu item. menuItem4.set_Shortcut(Shortcut.CtrlL); // Set the index of the menu item so it is placed below //the first submenu item. menuItem4.set_Index(1); // Add menuItem3 and menuItem4 to menuItem2's list of menu items. menuItem2.get_MenuItems().Add(menuItem3); menuItem2.get_MenuItems().Add(menuItem4); // Add menuItem2 to menuItem1's list of menu items. menuItem1.get_MenuItems().Add(menuItem2); // Add menuItem1 to the MainMenu for displaying. mainMenu1.get_MenuItems().Add(menuItem1); } //CreateMyMenu

System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Menu
System.Windows.Forms.MenuItem


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- MenuItem クラスのページへのリンク