Добавление элементов в 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
это приятно знать и держать его на задании времени проектирования. Но это довольно просто и относится к нему как к любому другому объекту, который должен быть создан перед использованием.