Как разрешить настройке пользователя проекта иметь тип List <string>? - PullRequest
1 голос
/ 10 июня 2011

Мое приложение в настоящее время использует систему пользовательских настроек (через свойства проекта) для хранения пользовательских данных. Я использую эти настройки вместо записи в / из App.Config, потому что мне нужно, чтобы данные сохранялись, когда ClickOnce обновляет свою сборку.

Сейчас мне нужно, чтобы пользователь мог указать список строк, которые будут сохранены в пользовательских настройках. Я уже имел дело с настройками в C # PropertyGrid, и я убедился, что если я установлю MyPropertyGrid.SelectedObject = new List<string>(), это даст мне подходящий редактор для редактирования списка строк.

К сожалению, когда я захожу в «Настройки проекта» -> «Настройки» и нажимаю «Обзор» для типа, я не могу выбрать «Список» или найти подходящие типы для списка строк. У кого-нибудь есть предложения как сохранить список строк в пользовательских настройках?

Ответы [ 3 ]

2 голосов
/ 10 июня 2011

Вы можете добавить свои собственные настройки вручную, когда дизайнер не позволит вам выбрать типы. Это может случиться с некоторыми встроенными типами и с множеством ваших собственных пользовательских типов. Вот ссылка на похожий вопрос по SO:

Почему я не могу выбрать пользовательский тип для настройки из того же проекта / сборки, что и файл настроек?

и вот ссылка на ответ (он есть в VB.NET, но принципы применяются):

http://blog.coretech.dk/jgs/add-custom-data-type-structure-to-mysettings-in-vbnet-wpf/

1 голос
/ 10 июня 2011

Ну ... я вижу System.Collections.Specialized.StringCollection в списке типов.Почему бы вам просто не использовать это?

Вы можете использовать следующие преобразования между StringCollection и List<string>:

var stringList = stringCollection.Cast<string>().ToList();

var stringCollection = new StringCollection();
stringCollection.AddRange(stringList.ToArray());
0 голосов
/ 13 ноября 2014

Вы не можете сделать это дизайнером, но вы можете вручную отредактировать файл настроек.

Дело в том, что VS позволяет сериализовать тип int [] по умолчанию в файле настроек - он просто не позволяет выбрать его по умолчанию. Итак, создайте настройку с нужным именем (например, SomeTestSetting) и сделайте его любого типа (например, строка по умолчанию). Сохраните изменения.

Теперь перейдите в папку вашего проекта и откройте файл «Properties \ Settings.settings» в текстовом редакторе (например, в «Блокноте»). Или вы можете открыть его в VS, щелкнув правой кнопкой мыши в обозревателе решений на «-> Свойства -> Settings.settings ", выберите" Открыть с помощью ... ", а затем выберите" Редактор XML "или" Редактор исходного кода (текста) ". В открытых настройках xml найдите ваши настройки (это будет выглядеть так):

<Setting Name="SomeTestSetting" Type="System.String" Scope="User">
  <Value Profile="(Default)" />
</Setting>

Измените параметр «Тип» с System.String на List. Теперь этот раздел будет выглядеть так:

<Setting Name="SomeTestSetting" Type="System.Collections.Generic.List`1[System.String]" Scope="User">
  <Value Profile="(Default)" />
</Setting>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...