Редактор StringCollection не сохраняет введенные пользователем значения

1

Я использовал редактор 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, чтобы пользователь вводил строковые значения в String Editor.

Я даже ссылался на приведенную ниже ссылку.. но все еще существует проблема: как я могу использовать WinForms PropertyGrid для редактирования списка строк?

Теги:
listbox

2 ответа

1

Да, вам нужно применить 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;
   }
}
  • 0
    как предложено .. я попробовал вышеупомянутый данный вариант .. но все еще проблема существует.
  • 0
    @ user1291401 Только что проверил, у меня работает нормально. Какую версию VisualStudio вы используете? Попробуйте очистить раствор и восстановить его. Тогда проверьте, это может помочь ...
Показать ещё 4 комментария
0

Вы также можете попробовать создать список в своем конструкторе. Это вместе с редактором коллекций строк и атрибутами 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>();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню