Добавление элементов в my.settings StringCollection

У меня есть коллекция строк в my.settings. Я хочу добавить строку к нему из текстового поля. Я попробовал это:

 My.Settings.Usernames.Add(textbox1.Text)

Но я получаю эту ошибку, когда код выполняется:

System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.

Есть идеи? Я ценю любой ответ, спасибо.

2 ответа

Решение

Скорее всего, вы еще не создали его.

Если вы запустите программу в этот момент, настройка фактически не будет создана, поэтому, если вы попытаетесь добавить или удалить элемент из коллекции, вы получите сообщение об ошибке "Ссылка на объект не установлена ​​для экземпляра объекта".

Есть несколько способов это исправить. Во-первых, вы можете создать объект настройки во время выполнения, если он пуст, но это немного хлопотно.

Лучшее решение - щелкнуть текстовое поле Значение на странице настроек. Затем щелкните многоточие справа, чтобы открыть редактор коллекции строк. Если вы закроете это без добавления каких-либо строк, окно "Настройки" все еще не создаст объект настройки. Чтобы предотвратить это, добавьте строку в редактор коллекции строк и нажмите кнопку "ОК". Затем снова откройте редактор, удалите строку и нажмите OK. Это сохраняет объект настройки, но он пуст.

Другой способ сделать это на лету - это событие Form Load или Sub Main, в зависимости от того, как запускается ваше приложение:

' initialize the collection ias needed:      
If My.Settings.Usernames Is Nothing Then
   My.Settings.Usernames = New System.Collections.Specialized.StringCollection
End If

Вынуждая его инициализировать, добавив поддельную строку в Settings это приятно знать и держать его на задании времени проектирования. Но это довольно просто и относится к нему как к любому другому объекту, который должен быть создан перед использованием.

Другие вопросы по тегам