动态菜单和子菜单“按代码"在C#中 [英] Dynamic Menu and SubMenu "By Code" In C#
本文介绍了动态菜单和子菜单“按代码"在C#中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
你好,
我正在尝试通过代码创建动态菜单(我正在从SQL数据库中读取菜单项).
但是问题是我无法创建子菜单.
例如,我可以创建一个名为 FILE 的菜单,并在其下创建一个菜单项,从而产生 NEW ,但是我不能在其下添加菜单项( PROJECT ) menuItem NEW .
Hello,
Im trying to create a dynamic menu by code (I''m reading the menu items from a SQL database).
But the problem is that I''m not able to create a sub menu.
For example I can create a menu titled FILE and a menuItem under it titeld NEW but I can''t add a menuitem (PROJECT)under the menuItem NEW.
MainMenu MMenu = new MainMenu();
DataTable DT_Menu = GetDataTable();
foreach (DataRow DR in DT_Menu.Rows)
{
if (Convert.ToBoolean(DR["M_Header"]) == true)
{
MenuItem MItem = new MenuItem();
MItem.Name = DR["M_Name"].ToString();
MItem.Text = DR["M_Text"].ToString();
MMenu.MenuItems.Add(MItem);
}
else
{
MenuItem CMItem = new MenuItem();
CMItem.Name = DR["M_Name"].ToString();
CMItem.Text = DR["M_Text"].ToString();
MenuItem ExistMnu = new MenuItem();
ExistMnu = (MenuItem) MMenu.MenuItems[DR["M_Parent"].ToString()];
if (ExistMnu != null)
{
ExistMnu.MenuItems.Add(CMItem);
}
}
}
Menu = MMenu;
}
public DataTable GetDataTable()
{
DataTable DT = new DataTable("MENU");
DataColumn Pmry2 = new DataColumn("M_Parent", typeof(string));
Pmry2.Unique = false;
DataColumn Pmry3 = new DataColumn("M_Name", typeof(string));
Pmry3.Unique = true;
DT.Columns.Add(Pmry2);
DT.Columns.Add(Pmry3);
DT.Columns.Add("M_Text", typeof(string));
DT.Columns.Add("M_Header", typeof(bool));
DataColumn[] myPrimaryKeyColumns = new DataColumn[2];
myPrimaryKeyColumns[1] = DT.Columns["M_Name"];
DT.PrimaryKey = myPrimaryKeyColumns;
DT.Rows.Add("" , "File", "FILE", true);
DT.Rows.Add("File", "New", "NEW", false);
DT.Rows.Add("New", "Project", "PROJECT", false);
return DT;
}
}
}
在此先感谢您.
Thanks in advance.
推荐答案
您快到了.MenuItem
具有属性MenuItems
(以及菜单).您只需要使用MenuItem.MenuItems.Add(existingMenuItem)
.
—SA
You''re almost there.MenuItem
has the propertyMenuItems
(as well as Menu). You only need to useMenuItem.MenuItems.Add(existingMenuItem)
.
—SA
尝试一下.
Try this.
MainMenu MMenu = new MainMenu();
DataTable DT_Menu = GetDataTable();
MenuItem MItem = new MenuItem();
foreach (DataRow DR in DT_Menu.Rows)
{
if (Convert.ToBoolean(DR["M_Header"]) == true)
{
MItem = new MenuItem();
MItem.Name = DR["M_Name"].ToString();
MItem.Text = DR["M_Text"].ToString();
MMenu.MenuItems.Add(MItem);
}
else
{
MenuItem MItemChild = new MenuItem();
MItemChild.Name = DR["M_Name"].ToString();
MItemChild.Text = DR["M_Text"].ToString();
MMenu.MenuItems.Add(MItemChild);
}
}
Menu = MMenu;
}
感谢您的快速回复:)
但是我想我确实添加了项目菜单!
Thanks for your fast reply :)
but i think i did add the item menu!!!
ExistMnu.MenuItems.Add(CMItem)
这篇关于动态菜单和子菜单“按代码"在C#中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文