2010-03-02 25 views
5

我已經在Windows應用程序C#3.5中創建了一個用戶控件,它具有許多屬性(字符串,int,顏色等)。可以在屬性窗口中修改這些值,並且這些值可以保持不變。.Net WinForm應用程序不支持類型屬性列表<MyClass>

但是我已經創建了像

public class MyItem 
    { 
     public string Text { get; set; } 
     public string Value { get; set; } 
    } 

    public class MyControl : UserControl 
    { 
     public List<MyItem> Items { get; set; } 
    } 

一個屬性的屬性對話框允許我來添加和刪除這些項目,但只要我關閉對話框我進入丟失的值。

我錯過了什麼?非常感謝!

+0

要堅持設計時編輯/在一個自定義對象的屬性窗口的變化,我相信你會需要實現一個類型轉換器,我想你可能會想繼承ExpandableObjectConverter到在「屬性」窗口中爲您提供更好的UI。 – BillW 2010-03-02 15:52:15

回答

2

您需要初始化這些項目,這樣一個自動獲取/設置程序不會幫助您。

嘗試

public class MyControl : UserControl 
{ 
    private List<MyItem> _items = new List<MyItem>(); 

    public List<MyItem> Items 
    { 
     get { return _items; } 
     set { _items = value; } 
    } 
} 
+2

您不必爲此創建私有變量。他可以繼續使用自動獲取的財產;設置符號,但然後他需要初始化'Items = new List ();'在UserControl的默認構造函數中 – Nick 2010-03-02 15:22:49

+1

有一個相當「可疑」的答案。這是非常可疑的,這將有*任何*效果* *。讀者注意:YMMV - 比平時多。 – 2010-03-04 12:52:48