[align=left]如:现Winform窗体上有一 menuStrip菜单控件,
menuStrip内有:功能1、功能2、功能3、功能4、功能5......
如何同事设置 功能1、功能2、功能3、功能5 的visible为 false,唯有功能4的visible为true?
有什么好的方法?
(功能1--5默认visible属性为true)[/align]
C#winform控件menuStrip

解决方案 »

  1.   

    每一个Item项不是都有对应的属性吗?在属性里设置visible不就可以了
      

  2.   


    我写的有错错别字是:如何同时设置 功能1、功能2、功能3、功能5 的visible为 false,唯有功能4的visible为true?menuStrip内有:功能1、功能2、功能3、功能4、功能5......在功能A菜单中。
    如何同时设置 操作1、操作2、操作3 在功能B菜单中.
    如何同时设置功能A中的 功能1、功能2、功能3、功能5 的visible为 false,唯有功能4的visible为true?我说同时是说用一个循环!不是手动的一个一个的敲重复的代码.ok?
      

  3.   

    遍历主菜单及对应的子菜单即可
            public void SetMenus()
            {
                ToolStripMenuItem mnuItem;
                ToolStripMenuItem refMenuItem = new ToolStripMenuItem();            //初始设置所有菜单不可见
                foreach (ToolStripMenuItem ctrl in mainMenu.Items)
                {
                    ctrl.Visible = false;
                    foreach (object subItem in ctrl.DropDownItems)
                    {
                        if (subItem.GetType() == refMenuItem.GetType())
                        {
                            mnuItem = (ToolStripMenuItem)subItem;
                            mnuItem.Visible = false;
                        }
                    }
                }            //取得相应用户对应的菜单项权限
                string sqlFunc = string.Format("select *** from *** ");
                SqlDataAdapter adp = new SqlDataAdapter(sqlFunc, conn);
                DataSet ds = new DataSet();
                adp.Fill(ds);            //设置菜单项的可见或可用性
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    //遍历主菜单
                    foreach (ToolStripMenuItem ctrl in mainMenu.Items)
                    {
                        if (ctrl.Name.ToUpper().Trim() == dr[0].ToString().ToUpper().Trim())
                        {
                            ctrl.Visible = true;
                            ctrl.Enabled = true;
                            break;
                        }                    //遍历子菜单
                        foreach (object subItem in ctrl.DropDownItems)
                        {
                            if (subItem.GetType() == refMenuItem.GetType())
                            {
                                mnuItem = (ToolStripMenuItem)subItem;
                                if (mnuItem.Name.ToUpper().Trim() == dr[0].ToString().ToUpper().Trim())
                                {
                                    mnuItem.Visible = true;
                                    mnuItem.Enabled = true;
                                    break;
                                }
                            }
                        }
                    }
                }
            }