我正在开发一个使用 contextMenuStrip 的 C# winForm 项目。我试图弄清楚如何禁用/覆盖一次只允许一个 toolStripMenuItem 进行选择的默认行为。在过去的 2 天里,我一直在做这件事,但我取得了 0 进展。
有谁知道任何链接或如何做到这一点?
提前致谢,-DA
我正在开发一个使用 contextMenuStrip 的 C# winForm 项目。我试图弄清楚如何禁用/覆盖一次只允许一个 toolStripMenuItem 进行选择的默认行为。在过去的 2 天里,我一直在做这件事,但我取得了 0 进展。
有谁知道任何链接或如何做到这一点?
提前致谢,-DA
这是我在我们的一个项目中找到的一些代码,可能正是您所追求的。它来自一个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;
}