我想知道.Net-3.5是否带有内置的List<string>、string[] TypeConverter或UITypeEditor,这样我就可以从属性网格中编辑这种属性。
发布于 2010-01-29 23:48:26
您可以在此处使用[Editor("System.Windows.Forms.Design.StringArrayEditor,类型、程序集版本和公钥标记信息“,System.Design (System.Drawing.Design.UITypeEditor))]
发布于 2018-06-17 18:49:17
用于List<String>的UITypeEditor
对于string[],您不需要做任何特殊的事情,属性网格将使用包含多行文本框的标准对话框来编辑字符串数组,并且每一行都将是数组中的一个元素。
要在属性网格中编辑List<string>,可以使用以下任一选项:
StringCollectionEditor显示了一个对话框,其中包含用于编辑elementsCollectionEditor用于在集合编辑器对话框中编辑项目选项1- StringCollectionEditor
private List<string> myList = new List<string>();
[Editor("System.Windows.Forms.Design.StringCollectionEditor, " +
"System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
typeof(UITypeEditor))]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public List<string> MyList {
get {
return myList;
}
set {
myList = value;
}
}

选项2-自定义CollectionEditor
首先创建自定义编辑器:
//You need to add reference to System.Design
public class MyStringCollectionEditor : CollectionEditor {
public MyStringCollectionEditor() : base(type: typeof(List<String>)) { }
protected override object CreateInstance(Type itemType) {
return string.Empty;
}
}然后使用编辑器属性装饰该属性:
private List<string> myList = new List<string>();
[Editor(typeof(MyStringCollectionEditor), typeof(UITypeEditor))]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public List<string> MyList {
get {
return myList;
}
set {
myList = value;
}
}

https://stackoverflow.com/questions/2163010
复制相似问题