Есть ли встроенный TypeConverter или UITypeEditor для редактирования списка строк - PullRequest
4 голосов
/ 29 января 2010

Я хочу знать, поставляется ли .Net-3.5 со встроенным List<string> или string[] TypeConverter или UITypeEditor, чтобы я мог редактировать этот тип свойства из сетки свойств.

Ответы [ 2 ]

2 голосов
/ 17 июня 2018

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

Вариант 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

2 голосов
/ 29 января 2010

Вы можете использовать [Editor («System.Windows.Forms.Design.StringArrayEditor, System.Design, [здесь указана версия сборки и токен открытого ключа]», typeof (System.Drawing.Design.UITypeEditor))]

...