我正在使用一个使用contextMenuStrip的C#winForm项目。我试图弄清楚如何禁用/覆盖默认行为,一次只允许一个toolStripMenuItem进行选择。过去两天我一直在这方面工作,我取得了0的进步。
有没有人知道任何链接或如何做到这一点?
提前致谢, -DA
答案 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;
}