簡體   English   中英

無法在繼承的winform上將項目添加到ContextMenuStrip

[英]cannot add items to ContextMenuStrip on inherited winform

我的設置非常簡單。
我有一個名為FormBaseList的表單,在該表單上有一個DataGridView和一個ContextMenuStrip。 ContextMenuStrip耦合到DataGridView,並具有2個菜單項。

現在,我使用添加Windows窗體將新窗體添加到項目中,然后選擇“ Windows窗體” /“繼承的窗體”。 作為基礎,我選擇我的FormBaseList。

現在,我有了一個新窗體,稱為FormSomethingList,它是從FormBaseList派生的。
在可視設計器中,我現在可以在FormSomethingList上的ContextMenuStrip中添加一個附加MenuItem,但是如果我編譯並運行該應用程序,則該新MenuItem消失了。 當我在設計器中打開FormSomeThingList時,新的MenuItem也消失了。

這是“正常”行為還是我的項目有問題? 我懷疑第一個,但想確認一下。 而且,如果這確實是“正常”的行為,那么我該如何解決該問題,而無需在代碼中全部完成。

您甚至不必運行該應用程序。 如果您只是重建,則將看到菜單選項已消失。 對於每個構建,您都在告訴Form2它一個窗體1,並且上下文菜單被設置為該窗體。 實際上,請注意,在表格2中,上下文菜單的屬性不可編輯。 不幸的是,GUI允許您為上下文菜單鍵入其他值,但是如果嘗試通過更改“項目”集合屬性來更改此值,則將無法在屬性窗口中進行更改。

您只需要以編程方式添加該項目。 但這沒什么大不了的。 在窗體2中添加菜單項后,在重建之后,它從上下文菜單中消失了,但仍然存在。 查看設計器代碼,您將看到它。 菜單項仍被定義為表單2的一部分,但只是與上下文菜單斷開了連接。 因此,在form2的load事件上,您可以讀取它。

contextMenuStrip1.Items.Add(myAddedMenuStripItem);

在designer.cs中查找以查看添加到上下文菜單的項目的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM