0

我正在开发一个使用 contextMenuStrip 的 C# winForm 项目。我试图弄清楚如何禁用/覆盖一次只允许一个 toolStripMenuItem 进行选择的默认行为。在过去的 2 天里,我一直在做这件事,但我取得了 0 进展。

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

提前致谢,-DA

4

1 回答 1

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;
        }
于 2013-06-20T16:39:19.267 回答