当前位置: 代码迷 >> C# >> C#winfrom窗体ContextMenuStrip下选项禁用,该怎么解决
  详细解决方案

C#winfrom窗体ContextMenuStrip下选项禁用,该怎么解决

热度:100   发布时间:2016-05-05 02:38:03.0
C#winfrom窗体ContextMenuStrip下选项禁用
本帖最后由 qq_27672059 于 2015-10-15 21:55:12 编辑
窗体 动态从数据库中生成按钮并设置了不同颜色和文本值  如:红色 101 黄色 102
  
按钮绑定一个右键菜单 右键菜单二级菜单如:(开始  离开 。。)

 现在想把 右键菜单二级菜单(开始)按  铵钮中的 ”红色 101 “  用ContextMenuStrip属性enabled禁用(开始)
   而窗体中的 (黄色 102 )这个按钮中的  右键菜单二级菜单(开始) 就不禁用 
 如同  下图的效果
 

求方法
    
------解决思路----------------------
遍历循环判断,然后调用enabled=false
------解决思路----------------------
ContextMenuStrip 这个是右键菜单
MainMenuStrip才是主菜单的,不过也有可能你用的是MenuStrip,逐级往下取
------解决思路----------------------
你的代码是怎么写的呢?正常方法就是enabled属性啊
动态的也一样,绑定opening事件 设置就好了
------解决思路----------------------
类似:

 ContextMenuStrip strip = new ContextMenuStrip();
            strip.Opening += new CancelEventHandler(strip_Opening);

 void strip_Opening(object sender, CancelEventArgs e)
        {
            (sender as ContextMenuStrip).Items[0].Enabled = false;
        }

------解决思路----------------------
引用:
Quote: 引用:

你的代码是怎么写的呢?正常方法就是enabled属性啊
动态的也一样,绑定opening事件 设置就好了
//生成Button按钮
        public void AddButton()
        {
            int x = 0;
            int y = 101;
            int z = 0;
            for (int i = 0; i < 10; i++)
            {
                Button bn = new Button();
                bn.Height = 50;
                bn.Width = 80;
                bn.Text = y.ToString();
                if (x > 1000)
                {
                    x = 0;
                    z += 80;
                }
                bn.Location = new Point(10 + x, 20 + z);
                tabControlPanel1.Controls.Add(bn);
                x += 100;
                y += 1;
                bn.BackColor = Color.Red;
                bn.ContextMenuStrip = contextMenuStrip1;
                //contextMenuStrip1.Enabled = false;
                foreach (ToolStripItem info in this.contextMenuStrip1.Items)
                {
                    if(bn.Text=="101")
                    {
                        info.Enabled = false;
                    }
                }
                //宾客结帐ToolStripMenuItem.Enabled = true;
                //contextMenuStrip1.Click += new EventHandler(在ToolStripMenuItem_Click);
                //if (bn.BackColor == Color.Red) { 

            }

        }

你还少了个opening事件,针对不同的button 设置不同的效果

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
  {
            Button btn = (Button)contextMenuStrip1.SourceControl;
            if (btn.Text == "button1")
            {
                toolStripMenuItem2.Enabled = false;
            }
            if (btn.Text == "aspose")
            {
                toolStripMenuItem3.Enabled = false;
            }
  }
  相关解决方案