???
for(i = 0;i<3;i++)
{
 mm.MenuItems.Add(menu[i].ToString());
}
你这里只试在一级菜单中增加子菜单而在mm.MenuItems[i].MenuItems你自然什么也访问不到!!!!!

解决方案 »

  1.   

    //_________________________________________________________________________________________________________________________
            /// <summary>
            /// 动态生成菜单
            /// </summary>
            /// <param name="sMenuStrip"></param>
            public void eBuildMenu(MenuStrip sMenuStrip)
            {
                try
                {
                    if (sMenuStrip != null)
                    {
                        string iSQLStr = "Select * From systemmenuinfo order by menuid desc";
                        int iCount = fGetTable(iSQLStr).Rows.Count;                    if (iCount > 0)
                        {
                            for (int i = 0; i < iCount; i++)
                            {
                                if (fGetFieldValue(iSQLStr, i, "parentmenuid") == "0")
                                {
                                    ToolStripMenuItem sMagicMenu = new ToolStripMenuItem();
                                    sMagicMenu.Name = fGetFieldValue(iSQLStr, i, "menuname");
                                    sMagicMenu.Text = fGetFieldValue(iSQLStr, i, "menutext");
                                    sMenuStrip.Items.Add(sMagicMenu);                                eCircleMenuNodes(sMagicMenu);
                                }
                            }
                        }
                    }
                }
                finally
                {
                }
            }        /// <summary>
            /// 循环查找子节点
            /// </summary>
            /// <param name="sMenuItem"></param>
            public void eCircleMenuNodes(ToolStripMenuItem sMenuItem)
            {
                try
                {
                    string sMenuId = fGetFieldValue("Select * From systemmenuinfo Where menuname = '" + sMenuItem.Name + "'", 0, "menuid");
                    int HaveChildsCount = fGetTable("Select * From systemmenuinfo Where parentmenuid = '" + sMenuId + "'").Rows.Count;
                    if (HaveChildsCount > 0)
                    {
                        for (int j = 0; j < HaveChildsCount; j++)
                        {
                            ToolStripMenuItem sChildMenu = new ToolStripMenuItem();
                            sChildMenu.Name = fGetFieldValue("Select * From systemmenuinfo Where parentmenuid = '" + sMenuId + "'", j, "menuname");
                            sChildMenu.Text = fGetFieldValue("Select * From systemmenuinfo Where parentmenuid = '" + sMenuId + "'", j, "menutext");
                            sMenuItem.DropDownItems.Add(sChildMenu);                        eCircleMenuNodes(sChildMenu);
                        }
                    }
                    else
                        return;
                }
                finally
                {
                }
            }
            //_________________________________________________________________________________________________________________________