StringCollection编辑器不存储用户输入的值
本文关键字:输入 用户 存储 编辑器 StringCollection | 更新日期: 2023-09-27 18:19:02
我已经在自定义控件中实现了StringCollection编辑器,下面是代码:
[Description("extra free-form attributes on this thing.")]
[Editor(@"System.Windows.Forms.Design.StringCollectionEditor," +
"System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
typeof(System.Drawing.Design.UITypeEditor))]
public System.Collections.Specialized.StringCollection Items
{
get
{
if (items == null)
items = new System.Collections.Specialized.StringCollection();
return this.items;
}
}
public System.Collections.Specialized.StringCollection items;
这工作得很好,但每次我在集合中输入一些值并重新打开它。值丢失,即不存储值。
是否缺少存储用户输入字符串的值,或者我是否需要实现自定义StringCollection,以便用户输入的字符串值在字符串编辑器中持续存在。
我甚至提到了下面给出的链接…但问题仍然存在:我如何使用WinForms PropertyGrid来编辑字符串列表?
是的,您需要将DesignerSerializationVisibility属性应用于DesignerSerializationVisibility.Content
。否则,所有对复杂对象(除了原语、字符串等)的更改都将丢失。
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Description("extra free-form attributes on this thing.")]
[Editor(@"System.Windows.Forms.Design.StringCollectionEditor," +
"System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
typeof(System.Drawing.Design.UITypeEditor))]
public System.Collections.Specialized.StringCollection Items
{
get
{
if (items == null)
items = new System.Collections.Specialized.StringCollection();
return this.items;
}
}
您也可以尝试在构造函数中创建列表。这与字符串集合编辑器和DesignerSerializationVisibility属性一起为我工作。
[Editor("System.Windows.Forms.Design.StringCollectionEditor, System.Design", "System.Drawing.Design.UITypeEditor, System.Drawing")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public List<string> TestList { get; set; }
public ListTest()
{
TestList = new List<string>();
}