.Net WinForm应用程序不持久化List <MyClass>类型的属性

Dea*_*unt 5 c# user-controls winforms

我在Windows应用程序C#3.5中创建了一个用户控件,它有许多属性(字符串,整数,颜色等).可以在属性窗口中修改这些值,并且值保持不变.

但是我创建了一个属性

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

  public class MyControl : UserControl
  {
       public List<MyItem> Items { get; set; }
  }
Run Code Online (Sandbox Code Playgroud)

属性对话框允许我添加和删除这些项目,但是一旦我关闭对话框,我输入的值就会丢失.

我错过了什么?非常感谢!

Sop*_*e88 2

您需要初始化项目,因此自动获取器/设置器在这里无法帮助您。

尝试

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

    public List<MyItem> Items
    {
         get { return _items; }
         set { _items = value; }
    }
 }
Run Code Online (Sandbox Code Playgroud)

  • 您不必创建私有变量来执行此操作。他可以继续使用自动属性get;设置符号,但随后他需要在 UserControl 的默认构造函数中初始化 `Items = new List&lt;MyItem&gt;();` (2认同)