C#winfrom窗体ContextMenuStrip下选项禁用

GpengY 2015-10-15 09:16:46
窗体 动态从数据库中生成按钮并设置了不同颜色和文本值 如:红色 101 黄色 102

按钮绑定一个右键菜单 右键菜单二级菜单如:(开始 离开 。。)

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


求方法
...全文
736 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
devmiao 2015-10-16
  • 打赏
  • 举报
回复
遍历循环判断,然后调用enabled=false
u010868852 2015-10-16
  • 打赏
  • 举报
回复
引用 9 楼 qq_27672059 的回复:
[quote=引用 7 楼 u010868852 的回复:] 你的代码是怎么写的呢?正常方法就是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) { 

            }

        }
[/quote] 你还少了个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;
            }
  }
GpengY 2015-10-16
  • 打赏
  • 举报
回复
引用 7 楼 u010868852 的回复:
你的代码是怎么写的呢?正常方法就是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) { 

            }

        }
exception92 2015-10-16
  • 打赏
  • 举报
回复
类似:

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

 void strip_Opening(object sender, CancelEventArgs e)
        {
            (sender as ContextMenuStrip).Items[0].Enabled = false;
        }
u010868852 2015-10-16
  • 打赏
  • 举报
回复
你的代码是怎么写的呢?正常方法就是enabled属性啊 动态的也一样,绑定opening事件 设置就好了
GpengY 2015-10-16
  • 打赏
  • 举报
回复
引用 5 楼 dongxinxi 的回复:
ContextMenuStrip 这个是右键菜单 MainMenuStrip才是主菜单的,不过也有可能你用的是MenuStrip,逐级往下取
没有用MenuStrip 只有ContextMenuStrip 这个是右键菜单
  • 打赏
  • 举报
回复
ContextMenuStrip 这个是右键菜单 MainMenuStrip才是主菜单的,不过也有可能你用的是MenuStrip,逐级往下取
GpengY 2015-10-16
  • 打赏
  • 举报
回复
引用 3 楼 assky124 的回复:
菜单展开前禁用
也没效果
assky124 2015-10-16
  • 打赏
  • 举报
回复
菜单展开前禁用
GpengY 2015-10-16
  • 打赏
  • 举报
回复
引用 1 楼 devmiao 的回复:
遍历循环判断,然后调用enabled=false
遍历循环按钮 还还右键菜单? 试过 没效果

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧