无法在继承的winform上向ContextMenuStrip添加项目

时间:2015-08-18 14:02:04

标签: c# winforms visual-inheritance

我的设置非常简单 我有一个名为FormBaseList的表单,在该表单上有一个DataGridView和一个ContextMenuStrip。 ContextMenuStrip耦合到DataGridView,有2个菜单项。

现在我使用添加Windows窗体向项目添加新表单,然后选择“Windows窗体”/“继承窗体”。作为基础我选择我的FormBaseList。

所以现在我有了一个名为FormSomethingList的新表单,它来自FormBaseList 在可视化设计器中,我现在可以向FormSomethingList上的ContextMenuStrip添加一个额外的MenuItem,但是如果我编译并运行该应用程序,那么新的MenuItem就会消失。当我在设计器中打开FormSomeThingList时,新的MenuItem也消失了......

这是“正常”行为还是我的项目有问题?我怀疑第一个,但想要一些确认。如果这确实是“正常”行为,我怎样才能解决它而不在代码中完成所有操作。

1 个答案:

答案 0 :(得分:1)

您甚至不必运行该应用程序。如果您只是重建,您将看到菜单选项已消失。对于每个构建,您告诉Form2 是表单1,并且上下文菜单设置为它。实际上,请注意,在表单2中,上下文菜单的属性不可编辑。遗憾的是,GUI允许您为上下文菜单键入其他值,但如果您尝试通过更改“Items”集合属性来更改此属性,则在属性窗口中,您将无法进行更改。

您只需要以编程方式添加项目。但这不是什么大问题。当您在表单2中添加菜单项时,在重建后,它会从上下文菜单中消失,但它仍然存在。查看设计器代码,您将看到它。菜单项仍然被定义为表单2的一部分,但它刚刚与上下文菜单断开连接。所以在form2的加载事件中,你可以读它。

contextMenuStrip1.Items.Add(myAddedMenuStripItem);

查看designer.cs以查看您添加到上下文菜单中的项目的名称。