UITypeEditor для List<String>
Для string[]
вам не нужно делать ничего особенного, и сетка свойств будет использовать стандартный диалог, содержащий многострочное текстовое поле для редактирования массива строк, и каждая строка будет элементом массива.
Чтобы редактировать List<string>
в сетке свойств, вы можете использовать один из следующих параметров:
StringCollectionEditor
, который показывает диалоговое окно, содержащее многострочное текстовое поле для редактирования элементов
- Создание пользовательского
CollectionEditor
для редактирования элементов в диалоговом окне редактора коллекции
Вариант 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;
}
}
![enter image description here](https://i.stack.imgur.com/DsOFC.png)
Вариант 2 - Custom 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;
}
}
Затем украсьте свойство атрибутом editor:
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;
}
}
![enter image description here](https://i.stack.imgur.com/S6mCk.png)