什麼是最簡單的編輯方式和堅持收集像decimal[]
或List<string>
WinForms設計器?在DesignMode中編輯集合的最簡單方法是什麼?
第一個問題是需要一個無參數的構造函數。所以我做了一個簡單的包裝類: (在某些時候這就像MyObject<T>
,但WinForms的designercode發電機不知道如何處理它)
[Serializable()]
public class MyObject
{
public MyObject() {}
public decimal Value {get; set;}
}
在容器類,我們定義一個屬性,並添加CollectionEditor屬性吧:
public class MyContainer
{
private List<MyObject> _col = new List<MyObject>();
[Editor(typeof(CollectionEditor), typeof(System.Drawing.Design.UITypeEditor))]
public List<MyObject> Collection
{
get { return _col; }
set { _col = value; }
}
}
現在我想基於答案在這裏對計算器和articless上codeproject.com各種各樣的東西:
- 十進制[]字段ArrayEditor
- 自定義類型轉換器,用於目錄的MyObject
- 自定義集合類 的容器類
- 自定義編輯器與實施的EditValue
- 實施的MyObject 的IComponent接口
- 讀/寫性能
- 試過添加DesignerSerializationVisibility(DesignerSerializationVisibility.Content)
我沒有得到它的工作,使
- 收集是在將designMode
- 可見的收集是在將designMode編輯
- 新項目可以被添加到集合中的designMode
然而,通過保存,關閉和重新打開集合中的元素永遠不會持久化。
編輯: 漢斯給了我一些提示(他的評論以某種方式進入了虛空)。我遵循他的指導原則,並更新了上面的源代碼,但遺憾的是仍然無法正常工作......
太好了!這工作:) 這不是我喜歡的CollectionEditor,但我會啓動反射器,並檢查我在我的實現中究竟做了什麼錯誤.. – Laoujin