在我的应用程序中,我有一个ToolStripMenu (文件、编辑、备注),一个ToolStrip就在我的工作区上方,还有一个工作区本身的上下文菜单。现在,Notes ToolStripMenu、ToolStrip和ContextMenuStrip都具有执行相同操作的相同内容。我在想,有没有一种优雅的方法来设计ToolStripMenu,并让另外两个“镜像”它的功能和内容,而不是重写3次?我看到所有3个控件都使用ToolStripItems和ToolStripItemCollections,因此我认为这很容易做到,但属性大多是只读的,如果我尝试循环一个控件的项以将它们添加到另一个控件中,它们将从初始所有者中删除,并且没有用于ToolStripItems的克隆方法。
谢谢。
发布于 2010-06-22 02:16:31
创建重用您的项、操作等的方法。
public MainForm()
{
//in your constructor, create all your common methods, actions, etc and save them to private vars
//Then in your form:
ToolStripMenu menu = new ToolStripMenu();
AttachCommonFunctionality(menu);
Items.Add(menu);
ContextMenuStrip rightClick = new ContextMenuStrip();
AttachCommonFunctionality(rightClick);
this.ContextMenu = rightClick;
//etc...
}
private void AttachCommonFuntionality(Control c)
{
c.Items.Add(_item1);
c.Items.Add(_item2);
//etc...
c.OnClick += _myCommonAction;
//etc...
}https://stackoverflow.com/questions/3086269
复制相似问题