如何正确地公开列表<;对象>;属性
本文关键字:lt gt 属性 对象 列表 正确地 | 更新日期: 2023-09-27 18:21:31
我为自己制作的自定义窗口窗体创建了一个属性。
private List<object> values;
public List<object> Values
{
get
{
return values;
}
set
{
values = value;
}
}
它在设计器的属性窗口中显示得很好。我转到属性值字段和带有"…"的按钮显示了三个点。我点击按钮,就会出现一个窗口,允许我将项目添加到列表中。我添加了它们,然后单击"确定"。没有出现错误,但项目尚未保存。
我的问题是如何正确设置,以便在设计时在属性窗口中设置List<object>
项?
在Form1.Designer.cs中,像以下一样手动实例化List
this.Values = new List<object>();
添加项目后,Form1.Designer.cs
文件将按照正常方式重新创建,但上面的行将被替换
this.Values = ((System.Collections.Generic.List<object>)(resources.GetObject("$this.Values")));
或者,在声明列表时实例化它。
private List<object> values = new List<object>();
public List<object> Values
{
get
{
return values;
}
set
{
values = value;
}
}
Thx到键盘p。我把我的代码改成了你建议的,比如
private列表<object>
值=新列表<object>
();
公用列表<object>
值{收到{返回值;}设置{values=值;}}
它和我想要的一模一样。
如果有人需要的话,需要注意一件事。如果你使用的是像List <CustomClass>
这样的自定义类,而不是List <object>
。在"CustomClass"定义中执行此
[System.Serializable]
public class CustomClass
{
......
}
否则,当您试图通过属性窗口将项目添加到列表时,将出现错误。
另一种方法是将List <CustomClass>
更改为CustomClass[]
private CustomClass[]值;
public CustomClass[]值{收到{返回值;}设置{values=值}}
第二个方法我不需要在CustomClass定义的开头添加[System.Serializable]。
我希望这对某人有所帮助。