此答案適用於VB.NET。我計劃變成C#這一個DLL,但現在它在vb.net,因爲那是我從開始這個想法和語言的項目是
這裏是我到目前爲止:
ToolStripMenuItemExt
目的:我的自定義ToolStripMenuItem
。
ToolStripMenuItemExt
有一個CheckListSheet
其中包含ToolStripMenuItemExt
的DropDownItems(我通過dropdownitems byref而不是byval傳入)的引用。它有一個屬性返回CheckListSheet
中的CheckLists
對象。
CheckListSheet
目的:保持對我通過觀察集合式觀察採集和收集我ToolStripMenuItemExt
返回一個對象的引用。
CheckListSheet
有CheckLists
對象。我通過byref傳遞的下拉項存儲在ObservableToolStripItemCollection
中,希望當我進行測試時,它允許我更容易地更新清單的集合,因爲它繼承了ObservableCollection(of ToolStripItemCollection)
。這個類還有一個共享函數,它返回具有私有共享範圍標識符的可觀察集合。
清單
目的:存儲CheckList
對象CollectionBase
類型。
覈對表
用途:存儲其對象作爲一個單一的項目檢查清單(只有一個項目在一個時間檢查)的ToolStripItemCollection
。
這對設計師和檢查列表的集合有一些屬性。最終我會添加邏輯來檢查並自動取消選中併爲其啓動一個事件。
MenuItemCheckListCollectionEditor
用途:允許的已知的集合,並且實例化ToolStripItem
對象被顯示,並加入到一個CheckList
。
現在它要求我給它一個類型或數組的類型,因此它可以建立它自己的什麼類型CollectionEditor
。我無法顯示類型的下拉列表或下拉對象的下拉列表。任何名稱中都有ToolStrip的類繼承ToolStripItem,這就是我使用這種類型的對象的原因。
如果ANYONE對我目前的答案的任何意見或預測可以任何可預見的陷阱,請分享。我不在乎你是用c#還是vb.net進行交流。也許我只需要停下來,把它變成C#代碼。也許這是不可能的。儘管我正在取得進展。什麼是非常有幫助的是搞清楚的MenuStrip的集合編輯器如何能夠填充ToolStripItems
的下拉
[更新]
集合編輯器需要你提供一個類型,它顯示。此類型必須繼承CollectionBase
,這意味着在設計時無法引用下拉項。 :感嘆:
從哪裏開始:在你的'ToolStripItemExtCollectionEditor'類中設置一些斷點並檢查你到達的值。 – 2014-09-10 15:05:25
到目前爲止我發現的是選擇組件啓動對集合編輯器的構造函數的調用,並打開集合CreateNewItemTypes()被調用。有沒有辦法讓我調試我的設計師?如果我能夠做到這一點,我可能會看到誰在調用屬性構造函數。 – Luminous 2014-09-10 15:43:49
也許你可以啓動VS的第二個實例,並將調試器連接到它。我知道這適用於Expression Blend。 – Dirk 2014-09-10 15:48:58