如何从contextMenuStrip中选择多个项目

时间:2013-06-20 16:12:22

标签: c#

我正在使用一个使用contextMenuStrip的C#winForm项目。我试图弄清楚如何禁用/覆盖默认行为,一次只允许一个toolStripMenuItem进行选择。过去两天我一直在这方面工作,我取得了0的进步。

有没有人知道任何链接或如何做到这一点?

提前致谢, -DA

1 个答案:

答案 0 :(得分:1)

这是我在我们的一个项目中找到的一些代码,可能就是你所追求的。它来自MouseDown处理程序。我认为关键是在每个CheckOnClick上设置ToolStripMenuItem属性,这样您就可以在Closing事件中意识到并设置e.Cancel = true

        if (e.Button == MouseButtons.Right)
        {
            ContextMenuStrip mStrip = new ContextMenuStrip();
            mStrip.Closing += new ToolStripDropDownClosingEventHandler(mStrip_Closing);

            foreach (Control cntrl in this.Controls)
            {
                ToolStripMenuItem itm = new ToolStripMenuItem();
                itm.Text = cntrl.Text;
                itm.CheckOnClick = true;
                itm.Checked = cntrl.Visible;

                mStrip.Items.Add(itm);
                mStrip.Show(this.PointToScreen(new Point(_mouseX, _mouseY)));
            }
        }

        private void mStrip_Closing(Object sender, ToolStripDropDownClosingEventArgs e)
        {
            if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked)
                e.Cancel = true;
        }