首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

sos ! winform 动态加载menustrip ,结果一片空白,无所适从

2012-09-03 
sos ! winform 动态加载menustrip ,结果一片空白,不知所措menuStrip1.Items[item.Name].Enabled true//

sos ! winform 动态加载menustrip ,结果一片空白,不知所措
menuStrip1.Items[item.Name].Enabled = true;//这个地方总报错,提示没有定义对象???
注释掉后运行,结果一片空白,不知所措!

后台数据库表:


id , fmuname,fmuid, menuname, menucap
10AppManage 投保单管理
2NULL0ReportManage统计报表
3NULL0SystemManage系统管理
4投保单管理1AppNewadd投保单录入
5投保单管理1AppModify投保单复核
6投保单管理1AppResult投保单回销
7统计报表2SalReport承保业绩报表
8统计报表2SalaryReport营业收入报表
9统计报表2PreSalReport预收业绩报表
10NULL0usermg用户设置
11NULL0reion机构设置
12NULL0dept部门设置


代码如下:
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)
  {
  ToolStripMenuItem item = new ToolStripMenuItem();

  item.Name = dr[3].ToString();//一级菜单的menuname



  // menuStrip1.Items[item.Name].Enabled = true;//各一级菜单是主菜单menuStrip2集合的项

  SetSubMenuItemByRole(menuStrip1.Items[item.Name]);//将一级菜单对应主菜单menuStrip2集合的项传给子菜单设置函数

  }
  }

  //对一级菜单的所有子菜单进行设置
  private void SetSubMenuItemByRole(ToolStripItem item)
  {
  if (item != null)
  {
  string mname = item.Name;

  ToolStripMenuItem pItem = (ToolStripMenuItem)item;

  //根据父菜单项加载子菜单
  string sql = "select * from tb_menu where fmuname ='" + mname + "' and id in (select menuid from tb_rolemenu where roleid='" + frmlogin.M_str_right + "')";

  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();

  try
  {
  pItem.DropDownItems[subItem.Name].Enabled = true;

  }
  catch (Exception e)
  {
  MessageBox.Show(e.Message);
  }
  }
  }
  else
  {

  }

  }
  }
  #endregion 


[解决办法]
调用
 '添加顶部菜单
 AddMenu(-1, Nothing, common.mymenus)
[解决办法]
在网上找一下源码,多得是。
[解决办法]
你没有将ToolStripMenuItem加到menuStrip上面去;
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.Add(item); //你缺少这个[b][/b]
menuStrip1.Items[item.Name].Enabled = true;//这个地方总报错,提示没有定义对象???

InitSubMenuItem(menuStrip1.Items[item.Name]);
}

}
[解决办法]

探讨

你没有将ToolStripMenuItem加到menuStrip上面去;
private void InitMenuItem()
{
string sql = "select * from tb_menu where fmuid = 0 "; //一级菜单,其父菜单id为0
//string tb = "tb……

热点排行