MenuItem クラス

定義

Menu コントロールに表示されるメニュー項目を表します。 このクラスは継承できません。

public ref class MenuItem sealed : ICloneable, System::Web::UI::IStateManager
public sealed class MenuItem : ICloneable, System.Web.UI.IStateManager
type MenuItem = class
    interface IStateManager
    interface ICloneable
Public NotInheritable Class MenuItem
Implements ICloneable, IStateManager
継承
MenuItem
実装

次の例では、宣言構文を使用して静的MenuItemオブジェクトをMenuコントロールに設定する方法を示します。


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>MenuItem Declarative Example</title>
</head>
<body>
    <form id="form1" 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="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>MenuItem Declarative Example</title>
</head>
<body>
    <form id="form1" 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="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

  <!-- For the hover styles of the Menu control to  -->
  <!-- work correctly, you must include this head   -->
  <!-- element.                                     -->
  <head runat="server">
    <title>Menu DataBinding Example</title>
</head>

  <body>
    <form id="form1" 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="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

  <!-- For the hover styles of the Menu control to  -->
  <!-- work correctly, you must include this head   -->
  <!-- element.                                     -->
  <head runat="server">
    <title>Menu DataBinding Example</title>
</head>

  <body>
    <form id="form1" 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"

title="Home"

description="Home">

<siteMapNode url="~\Music.aspx"

title="Music"

description="Music">

<siteMapNode url="~\Classical.aspx"

title="Classical"

description="Classical"/>

<siteMapNode url="~\Rock.aspx"

title="Rock"

description="Rock"/>

<siteMapNode url="~\Jazz.aspx"

title="Jazz"

description="Jazz"/>

</siteMapNode>

<siteMapNode url="~\Movies.aspx"

title="Movies"

description="Movies">

<siteMapNode url="~\Action.aspx"

title="Action"

description="Action"/>

<siteMapNode url="~\Drama.aspx"

title="Drama"

description="Drama"/>

<siteMapNode url="~\Musical.aspx"

title="Musical"

description="Musical"/>

</siteMapNode>

</siteMapNode>

</siteMap>

注釈

Menuコントロールは、オブジェクトによって表されるメニュー項目の階層でMenuItem構成されます。 各メニュー項目には、コントロールにメニュー項目が表示されるMenuレベルを指定する読み取り専用Depthプロパティがあります。 親メニュー項目がない最上位レベル (レベル 0) のメニュー項目は、ルート メニュー項目と呼ばれます。 親メニュー項目を持つメニュー項目をサブメニュー項目と呼びます。 すべてのルート メニュー項目がコレクションに Items 格納されます。 サブメニュー項目は、親メニュー項目の ChildItems コレクションに格納されます。 プロパティを使用して、メニュー項目の親メニュー項目に Parent アクセスできます。

注意

コレクション Items には ChildItems 、次のレベルダウンのメニュー項目のみが含まれます。 メニュー ツリーの下にあるメニュー項目にアクセスするには、後続の ChildItems メニュー項目のプロパティを使用します。

コントロールのメニュー項目を Menu 作成するには、次のいずれかの方法を使用します。

宣言型の構文を使用して、静的メニュー項目を作成します。

コンストラクターを使用して、クラスの新しいインスタンスを動的に MenuItem 作成します。 その後、これらのMenuItemオブジェクトをコレクションまたはChildItemsコレクションにItems追加できます。

コントロールを Menu データ ソースにバインドします。 コントロールが Menu コントロールに SiteMapDataSource バインドされると、 MenuItem データ ソース内の項目に対応するオブジェクトが自動的に作成されます。 他のデータ ソースの場合、 MenuItem データ ソースの階層構造に一致するオブジェクトも自動的に作成されます。ただし、コレクションを使用 DataBindings して、メニュー項目とそれに対応するデータ項目の間のバインド関係を指定するメニュー項目バインドを定義する必要もあります。

メニュー項目は、そのレベルに応じて、静的メニューまたは動的メニューのいずれかに表示されます。 静的メニューは常にコントロールに Menu 表示されます。 既定では、最上位レベル (レベル 0) のメニュー項目が静的メニューに表示されます。 プロパティを設定することで、静的メニュー内に追加のメニュー レベル (静的サブメニュー) を StaticDisplayLevels 表示できます。 プロパティで StaticDisplayLevels 指定された値より高いレベルのメニュー項目 (存在する場合) は、動的サブメニューに表示されます。 動的サブメニューは、ユーザーが動的サブメニューを含む親メニュー項目の上にマウス ポインターを置いた場合にのみ表示されます。

ユーザーがメニュー項目をクリックすると、コントロールは Menu リンクされた Web ページに移動するか、単にサーバーにポストバックできます。 NavigateUrlメニュー項目のプロパティが設定されている場合、Menuコントロールはリンクされたページに移動します。それ以外の場合は、処理のためにページをサーバーにポストバックします。 既定では、リンクされたページはコントロールと同じウィンドウまたはフレームに Menu 表示されます。 リンクされたコンテンツを別のウィンドウまたはフレームに表示するには、コントロールのプロパティをTargetMenu使用します。

注意

このプロパティは Menu.Target 、コントロール内のすべてのメニュー項目に影響します。 個々のメニュー項目のウィンドウまたはフレームを指定するには、オブジェクトのプロパティをTargetMenuItem直接設定します。

各メニュー項目には、プロパティ Text とプロパティがあります Value 。 プロパティの Text 値がコントロールに Menu 表示されますが、 Value プロパティはメニュー項目に関連付けられているポストバック イベントに渡されるデータなど、メニュー項目に関する追加のデータを格納するために使用されます。 プロパティを設定しても Text 、プロパティの設定を Value 解除すると、 Value プロパティはプロパティと同じ値で自動的に Text 設定されます。 反対の場合も同じです。 プロパティを設定しても Value プロパティを Text 設定しない場合、 Text プロパティはプロパティと同じ値で自動的に Value 設定されます。

注意

同じメニュー レベルのメニュー項目は、それぞれプロパティの一意の Value 値を持つ必要があります。 Menu コントロールは、同じ値を持つ同じレベルの異なるメニュー項目を区別できません。 このシナリオでは、ユーザーが重複する値を持つメニュー項目をクリックすると、メニューに最初に表示されるメニュー項目が選択されます。

ユーザーがメニュー項目の上にマウス ポインターを置いたときにツールヒントを表示するには、項目の ToolTip プロパティを設定します。

Menuコントロールには、いくつかの異なる種類のメニュー項目があります。 次の表のプロパティを使用して、さまざまなメニュー項目の種類のスタイル (フォント サイズや色など) を制御できます。

メニュー項目のスタイル プロパティ [説明]
DynamicHoverStyle マウス ポインターをその上に配置するときの動的メニュー項目のスタイル設定。
DynamicMenuItemStyle 個々の動的メニュー項目のスタイル設定。
DynamicMenuStyle 動的メニューのスタイル設定。
DynamicSelectedStyle 現在選択されている動的メニュー項目のスタイル設定。
StaticHoverStyle マウス ポインターをその上に配置するときの静的メニュー項目のスタイル設定。
StaticMenuItemStyle 個々の静的メニュー項目のスタイル設定。
StaticMenuStyle 静的メニューのスタイル設定。
StaticSelectedStyle 現在選択されている静的メニュー項目のスタイル設定。

個々のスタイル プロパティを設定する代わりに、次の表に示すスタイル コレクションを使用して、レベルに基づいてメニュー項目に適用されるスタイルを指定できます。

レベル スタイル コレクション [説明]
LevelMenuItemStyles メニュー項目の MenuItemStyle レベルに基づいてスタイルを制御するオブジェクトのコレクション。
LevelSelectedStyles 選択したメニュー項目の MenuItemStyle スタイルを、そのレベルに基づいて制御するオブジェクトのコレクション。
LevelSubMenuStyles レベルに基づいてサブメニュー項目のスタイルを制御するオブジェクトのコレクション MenuItemStyle

コレクションの最初のスタイルは、メニュー ツリーの最初の深度レベルのメニュー項目のスタイルに対応します。 コレクション内の 2 番目のスタイルは、メニュー ツリーの 2 番目の深さのレベルにあるメニュー項目のスタイルに対応しています。 これは、サブメニューがあるかどうかに関係なく、特定の深さのメニュー項目の外観が同じである必要がある目次スタイルのナビゲーション メニューを生成するために最もよく使用されます。

注意

前の表に示したレベル スタイル コレクションのいずれかを使用してコントロールのスタイル Menu を定義する場合、これらのスタイル設定は個々のメニュー項目スタイル プロパティをオーバーライドします。

メニュー項目のスタイルをカスタマイズするだけでなく、その外観をカスタマイズすることもできます。 次の表のプロパティを設定することで、メニュー項目のさまざまな部分にカスタム イメージを指定できます。

Image プロパティ [説明]
ImageUrl メニュー項目のテキストの横に表示されるオプションの画像。
PopOutImageUrl メニュー項目に動的サブメニューがあることを示すために、メニュー項目に表示されるオプションの画像。
SeparatorImageUrl 他のメニュー項目から切り離すために、メニュー項目の下部に表示されるオプションの画像。

コントロールで Menu メニュー項目が現在選択されているかどうかを確認するには、プロパティを Selected 使用します。 また、プロパティを使用して DataBound 、メニュー項目がデータにバインドされているかどうかを判断することもできます。 メニュー項目がデータにバインドされている場合は、このプロパティを DataItem 使用して、メニュー項目にバインドされているデータ項目の値にアクセスできます。

MenuItem クラスのインスタンスの初期プロパティ値一覧については、MenuItem コンストラクターに関するトピックを参照してください。

コンストラクター

MenuItem()

メニュー テキストまたは値を指定せずに、MenuItem クラスの新しいインスタンスを初期化します。

MenuItem(String)

メニュー テキストを指定して、MenuItem クラスの新しいインスタンスを初期化します。

MenuItem(String, String)

メニュー テキストと値を指定して、MenuItem クラスの新しいインスタンスを初期化します。

MenuItem(String, String, String)

メニュー テキスト、値、イメージの URL を指定して、MenuItem クラスの新しいインスタンスを初期化します。

MenuItem(String, String, String, String)

メニュー テキスト、値、イメージの URL、およびナビゲーション URL を指定して、MenuItem クラスの新しいインスタンスを初期化します。

MenuItem(String, String, String, String, String)

メニュー テキスト、値、イメージの URL、ナビゲーション URL、および表示先を指定して、MenuItem クラスの新しいインスタンスを初期化します。

プロパティ

ChildItems

現在のメニュー項目のサブメニュー項目を格納している MenuItemCollection オブジェクトを取得します。

DataBound

メニュー項目がデータ バインディングを使用して作成されたかどうかを示す値を取得します。

DataItem

メニュー項目にバインドされたデータ項目を取得します。

DataPath

メニュー項目にバインドされたデータへのパスを取得します。

Depth

メニュー項目が表示されるレベルを取得します。

Enabled

項目を有効にしてポップアウト イメージおよび子メニュー項目を表示する、MenuItem オブジェクトが有効であるかどうかを示す値を取得または設定します。

ImageUrl

メニュー項目のテキストの横に表示されるイメージの URL を取得または設定します。

NavigateUrl

メニュー項目がクリックされたときの移動先 URL を取得または設定します。

Parent

現在のメニュー項目の親メニュー項目を取得します。

PopOutImageUrl

メニュー項目に動的なサブメニューがあることを示すためにメニュー項目に表示されるイメージの URL を取得または設定します。

Selectable

MenuItem オブジェクトを選択できるかどうか、または "クリックできる" かどうかを示す値を取得または設定します。

Selected

現在のメニュー項目が Menu コントロールで選択されているかどうかを示す値を取得または設定します。

SeparatorImageUrl

他のメニュー項目と区別するためにメニュー項目の下部に表示するイメージの URL を取得または設定します。

Target

メニュー項目に関連付けられている Web ページの内容を表示する対象のウィンドウまたはフレームを取得または設定します。

Text

Menu コントロールのメニュー項目に表示されるテキストを取得または設定します。

ToolTip

メニュー項目のツールヒントのテキストを取得または設定します。

Value

メニュー項目の補足データ (ポストバック イベントを処理するために使用するデータなど) を格納するために使用される、非表示の値を取得または設定します。

ValuePath

ルート メニュー項目から現在のメニュー項目までのパスを取得します。

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

明示的なインターフェイスの実装

ICloneable.Clone()

現在の MenuItem オブジェクトのコピーを作成します。

IStateManager.IsTrackingViewState

MenuItem オブジェクトがビューステートへの変更を保存しているかどうかを示す値を取得します。

IStateManager.LoadViewState(Object)

メニュー項目が前回保存したビューステートを読み込みます。

IStateManager.SaveViewState()

ビューステートの変更を Object に保存します。

IStateManager.TrackViewState()

ビュー ステートへの変更を追跡するように MenuItem オブジェクトに指示します。

適用対象

こちらもご覧ください