我現在想動態加載菜單
請教怎么做
 menumain.Items.Clear();
           
        ToolStripMenuItem menutola = new ToolStripMenuItem();
        ToolStripMenuItem menutol1 = new ToolStripMenuItem();
        ToolStripMenuItem menutol2 = new ToolStripMenuItem();
         ToolStripMenuItem menuto3 = new ToolStripMenuItem();
        ToolStripMenuItem menutol4 = new ToolStripMenuItem();
        ToolStripMenuItem menutol5 = new ToolStripMenuItem();       
        for (int i = 0; i <= arrary.GetUpperBound(0); i++)
        {
                        if (arrary[i, 1] == "" || arrary[i, 1] == null)
            { }
            else
            {
                System.Windows.Forms.TreeNode tn = new System.Windows.Forms.TreeNode(arrary[i, 1]);
                tn.Tag = arrary[i, 0];//菜單代碼 arrary[i, 1]名稱 arrary[i, 2]級別
                
                //menutola.Text = "JokevinHr";
                //menumain.Items.Add(menutola);                switch(arrary[i,2])
                {
                                                                      case "1":
                                            menutol1 = menutola;
                        menumain.Items.Add(arrary[i, 1]);
                       
                                            
                        break;
                         
                    case "2":
                        trpa.Nodes.Add(tn);
                        trpb = tn;
                        trpb.Expand();
                        //ToolStripMenuItem menutol2 = new ToolStripMenuItem();
                        //menutol2.Text = tn.Text;
                        menutol1.DropDownItems.Add(arrary[i, 1]);                 
                        
                        break;                    case "3":
                        menutol2.DropDownItems.Add(arrary[i, 1]); 
                        break;                    case "4":
                        break;
                    case "5":
                        break;                    case "6":
                       break;
                    default:
                       break;
                }
                
            }        }

解决方案 »

  1.   

    MenuStrip只有items.add
    而ToolStripMenuItem沒有,只有DropDownItems.Add
    這中間轉時不會
      

  2.   

    就是怎么樣得到MenuStrip的多級菜單(二級或三級或更多級)
    動態得到
      

  3.   

    知道的幫幫我啊
    以下語句怎么轉換
    MenuStrip menuStripHr = new MenuStrip();
    ToolStripMenuItem MnuNew = new ToolStripMenuItem();
     MnuNew = menuStripHr.Items.Add(p_Arrary[i, 1], null,new EventHandler(Mnu_NewMenuItem_Click));
     MnuNew = MnuParent2.DropDownItems.Add(p_Arrary[i, 1],null, new EventHandler(Mnu_NewMenuItem_Click));
    void Mnu_NewMenuItem_Click(object sender, EventArgs e)
            {
            }
      

  4.   

    动态增加菜单的一个例子(不完全),但已可用,希望对你有帮助!#Region "-------- 从 DB 中取得有关 Menu 的记录,并产生本功能的 Menu --------"    ''' <summary>
        ''' 检查是否有相关的Menu 设定,如有,则建立
        ''' </summary>
        ''' <res></res>
        Private Sub CreateMenu()
            Dim dtMenu As DataTable
            dtMenu = oECSGen.getDT_MenuItem(c_PorgramID)        If dtMenu.Rows.Count = 0 Then Exit Sub        Dim mnuForm As New MenuStrip
            Dim dtMenuRoot As DataTable
            Dim iMenuID As Integer        dtMenuRoot = oECSGen.getDT_MenuItem_byID(c_PorgramID, 0)
            If dtMenuRoot.Rows.Count = 0 Then Exit Sub        ' 增加第一级Menu 
            For i As Int16 = 0 To dtMenuRoot.Rows.Count - 1
                Dim tsmItem As New ToolStripMenuItem(dtMenuRoot.Rows(i).Item("Item_Text").ToString)            ' 增加其下的所有级别的 Menu Item 
                iMenuID = dtMenuRoot.Rows(i).Item("Item_ID")            createNestMenuItem(tsmItem, iMenuID)            mnuForm.Items.Add(tsmItem)
            Next        mnuForm.Dock = DockStyle.Top        Me.MainMenuStrip = mnuForm
            Me.Controls.Add(mnuForm)
        End Sub    ''' <summary>
        ''' 嵌套产生一个Top Level 菜单项下所有级别的菜单项
        ''' </summary>
        ''' <param name="tsmParentItem">父菜单项</param>
        ''' <param name="iParentID">父菜单ID</param>
        ''' <res></res>
        Private Sub createNestMenuItem(ByVal tsmParentItem As ToolStripMenuItem, ByVal iParentID As Integer)
            Dim dtMenuLevel As DataTable
            Dim iMenuID As Integer        dtMenuLevel = oECSGen.getDT_MenuItem_byID(c_PorgramID, iParentID)
            If dtMenuLevel.Rows.Count > 0 Then
                For j As Int16 = 0 To dtMenuLevel.Rows.Count - 1
                    Dim tsmItemLevel As New ToolStripMenuItem(dtMenuLevel.Rows(j).Item("Item_Text").ToString, Nothing, New EventHandler(AddressOf OnMenuItem_Click), dtMenuLevel.Rows(j).Item("Item_Name").ToString)
                    tsmParentItem.DropDownItems.Add(tsmItemLevel)
                    iMenuID = Val(dtMenuLevel.Rows(j).Item("Item_ID"))                createNestMenuItem(tsmItemLevel, iMenuID)
                Next
            End If
        End Sub    ''' <summary>
        ''' 处理对应 Menu Item 的单击事件,根据其对应的名称
        ''' </summary>
        ''' <res>此处理过程必须要根据对应的Menu Item 写对应的处理事件</res>
        Private Sub OnMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim sItemName As String = CType(sender, ToolStripMenuItem).Name.Trim.ToLower        Select Case sItemName
                Case "mnufile_save"                 ' Menu : File
                    Toolbar_Click("Save")
                Case "mnufile_cancel"
                    Toolbar_Click("Undo")
                Case "mnufile_exit"
                    Toolbar_Click("Exit")            Case "mnuedit_copy"                 ' Menu : Edit            Case "mnuedit_paste"            Case "mnurecord_add"                ' Menu : Record
                    Toolbar_Click("Add")
                Case "mnurecord_edit"
                    Toolbar_Click("Edit")
                Case "mnurecord_delete"
                    Toolbar_Click("Delete")
                Case "mnurecord_copy"
                    Toolbar_Click("Copy")            Case "mnuOther"                     ' Menu : Other
                Case ""            Case ""                             ' Menu : Window            Case ""                             ' Menu : Help 
                Case Else        End Select    End Sub
    #End Region