好吧,我已閱讀了有關使用PropertyGrid和集合的幾個問題。但是,我很難理解如何/如果[TypeConverter]
會爲我工作。我已經讀過MSDN推出的那個小小的年代,坦率地說,這個可憐的,自學成才的程序員有點缺乏。如何將PropertyGrid集合限制爲列表<T>
所以,這裏是我的。首先集合:
[Serializable]
public List<ModuleData> Modules
{ get { return modules; } }
private List<ModuleData> modules;
集合中的對象:
[Serializable]
internal class ModuleData : IEquatable<ModuleData>
{
// simple data class with public properties
// to display in the propgrid control
}
我有一個包含描述既ModuleData對象和BatchData對象項的ListView控件。當我從ListView中選擇一個BatchData項目時,如預期的那樣PropertyGrid顯示集合編輯器。有沒有辦法將集合編輯器限制爲ListView控件中列出的任何ModuleData項目?理想情況下,我不希望將BatchData項(來自ListView)添加到BatchData集合中 - 尤其是因爲該集合不是針對BatchData對象類型的「類型」。
如果要求任何進一步的代碼示例,我會更樂意在編輯一些片斷。
爲清楚起見,ModuleData是持有指定的組件中需要實例類數據的自定義類。它包含的所有字段和公共/內部屬性。我想要做的是使用與屬性網格控件組裝的集合編輯器將ModuleData對象添加到BatchData Module
集合中。 ListView控件中列出了有資格添加的ModuleData對象。
編輯:刪除了: List<ModuleData>
繼承。
更新:如果我要創建自定義集合編輯器,這是否意味着我正在構建自己的自定義窗體/對話框?然後基本上提供propertygrid的信息來顯示我的自定義集合對話框通過UITypeEditor的屬性和繼承?
我試着補充一些想法,但我仍然什麼* *究竟要發生很模糊。 – 2010-02-07 08:47:11
@馬克 - 編輯,希望澄清一些。 – IAbstract 2010-02-08 03:49:56
@Marc - 爲了完成我的任務,我想我必須改變這個問題,這不會是猶太教(根據我已經閱讀的meta)。所以,我會接受你的回答 - 我不喜歡鬆散的結局。;)它確實幫助我研究不同的途徑,所以這是一個可行的答案! – IAbstract 2010-02-08 05:27:50