在鼠标右键单击ToolStripMenuItem时想要子菜单 - C#

时间:2013-07-10 05:53:10

标签: c# toolstrip toolstripmenu

我有一个Toolstrip控件,我正在添加一些ToolStripMenuItem。对于每个ToolStripMenuItem,我想要一个子菜单(如Close)。并且在子菜单应显示的任何ToolStripMenuItem上单击鼠标右键。

ToolStripMenuItem subMenuitem1 = new ToolStripMenuItem("Close");
items.DropDownItems.Add(subMenuitem1);

但这不起作用。 请给我一些建议。 谢谢

1 个答案:

答案 0 :(得分:4)

什么是“items”对象?

添加子菜单:

// new menu, if you're using designer you should have it already
ContextMenuStrip mnu = new ContextMenuStrip();

// new tool strip item
ToolStripMenuItem mnuItem1 = new ToolStripMenuItem();
mnuItem1.Text = "Some text 1";
mnuItem1.Name = "mnuItem1";

// new submenu item
ToolStripMenuItem mnuItem2 = new ToolStripMenuItem();
mnuItem2.Text = "Some text 2";
mnuItem2.Name = "mnuItem2";

// connect them...
mnuItem1.DropDownItems.Add(mnuItem2);
mnu.Add(mnuItem1);

现在是订阅活动的问题。

您希望单击鼠标右键显示子菜单。通常情况下,鼠标悬停在具有子菜单的项目上时会出现。因此,如果您按照自己的方式进行操作,我认为您必须在右键单击main toolStripItem时手动添加它。

ToolStripMenuItem没有MouseClick事件。您可以记住在MouseDown事件中单击了哪个鼠标按钮,然后在Click事件中处理它。

另外你应该记住,多次将一个ToolStripMenuItem实例添加到一个菜单,或者将相同的项添加到多个菜单,都不会起作用。您每次都必须创建新项目。