sos ! winform 动态加载menustrip ,结果一片空白,不知所措
menuStrip1.Items[item.Name].Enabled = true;//这个地方总报错,提示没有定义对象???
注释掉后运行,结果一片空白,不知所措!
后台数据库表:
id , fmuname,fmuid, menuname, menucap
1 0 AppManage 投保单管理
2 NULL 0 ReportManage 统计报表
3 NULL 0 SystemManage 系统管理
4 投保单管理 1 AppNewadd 投保单录入
5 投保单管理 1 AppModify 投保单复核
6 投保单管理 1 AppResult 投保单回销
7 统计报表 2 SalReport 承保业绩报表
8 统计报表 2 SalaryReport 营业收入报表
9 统计报表 2 PreSalReport 预收业绩报表
10 NULL 0 usermg 用户设置
11 NULL 0 reion 机构设置
12 NULL 0 dept 部门设置
代码如下:
private void frmMain_Load(object sender, EventArgs e)
{
InitMenuItem();
//SetMenuItemByRole();
}
#region InitMenuItem()初始化一级菜单
/// <summary>
/// InitMenuItem()初始化一级菜单,其父菜单id为0
/// </summary>
private void InitMenuItem()
{
string sql = "select * from tb_menu where fmuid = 0 "; //一级菜单,其父菜单id为0
//string tb = "tb_menu";
DataTable dt = boperate .GetTableBySql(sql);
foreach (DataRow dr in dt.Rows)
{
ToolStripMenuItem item = new ToolStripMenuItem();
item.Name = dr[3].ToString(); //menuname
menuStrip1.Items[item.Name].Enabled = true;//这个地方总报错,提示没有定义对象???
InitSubMenuItem(menuStrip1.Items[item.Name]);
}
}
#endregion
#region InitSubMenuItem(ToolStripItem item) 初始化一级菜单的所有子菜单
private void InitSubMenuItem(ToolStripItem item)
{
if (item != null)
{
string mname = item.Name;
ToolStripMenuItem pItem = (ToolStripMenuItem)item;
//根据父菜单项加载子菜单
string sql = "select * from tb_menu where fmuname ='" + mname + "'";
DataTable dt = boperate.GetTableBySql(sql);
if (dt.Rows.Count != 0)
{
foreach (DataRow dr in dt.Rows)
{
ToolStripMenuItem subItem = new ToolStripMenuItem();
subItem.Name = dr[3].ToString();
// subItem.Text = dr[4].ToString();
try
{
pItem.DropDownItems[subItem.Name].Enabled = true ;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
}
}
}
#endregion
#region SetMenuItemByRole() 根据用户在用户权限表中的权限动态的设置能使用的菜单项。
//对一级菜单进行权限设置
private void SetMenuItemByRole()
{
string sql = "select * from tb_menu where id in" +
"(select menuid from tb_rolemenu where roleid='" + frmlogin.M_str_right + "') and fmuid = 0";
DataTable dt =boperate .GetTableBySql(sql);
foreach (DataRow dr in dt.Rows)