0

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

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

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

这是“正常”行为还是我的项目有问题?我怀疑第一个,但想要一些确认。如果这确实是“正常”行为,我该如何解决它而不用代码做所有事情。

4

1 回答 1

1

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

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

contextMenuStrip1.Items.Add(myAddedMenuStripItem);

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

于 2015-08-18T14:37:37.873 回答