2010-03-02 27 views
5

Tôi đã tạo một điều khiển người dùng trong một ứng dụng Windows C# 3.5 và nó có một số thuộc tính (chuỗi, int, màu sắc vv). Đây có thể được sửa đổi trong cửa sổ thuộc tính và các giá trị được tiếp tục mà không có vấn đề..Net WinForm ứng dụng không bền bỉ một tài sản của loại Danh sách <MyClass>

Tuy nhiên tôi đã tạo ra một tài sản như

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

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

Hộp thoại thuộc tính cho phép tôi để thêm và loại bỏ các mặt hàng này, nhưng ngay sau khi tôi đóng hộp thoại các giá trị tôi bước vào bị mất.

Tôi đang thiếu gì? Cảm ơn nhiều!

+0

Để kéo dài Thiết kế thời gian chỉnh sửa/thay đổi trong cửa sổ Properties của một đối tượng tùy chỉnh, tôi tin rằng bạn sẽ cần phải thực hiện một TypeConverter, và tôi nghĩ rằng có thể bạn sẽ muốn kế thừa từ ExpandableObjectConverter để cung cấp cho bạn một ui tốt hơn trong cửa sổ Properties. – BillW

Trả lời

2

Bạn cần phải khởi tạo các mục để trình thu thập/thiết lập tự động sẽ không giúp bạn ở đây.

Hãy thử

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

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

Bạn không phải tạo biến riêng tư để thực hiện việc này. Anh ta có thể tiếp tục sử dụng auto-property get; đặt ký pháp, nhưng sau đó anh ta cần phải khởi tạo 'Items = new List ();' trong một hàm tạo mặc định cho UserControl – Nick

+1

Có một câu trả lời "nghi ngờ" khá. Nó là rất đáng ngờ rằng điều này sẽ có * bất kỳ * hiệu lực * ở tất cả *. Lưu ý cho người đọc: YMMV - nhiều hơn bình thường. –

Các vấn đề liên quan