Как расширить существующий массив My.Settings StringCollection - PullRequest
0 голосов
/ 05 июля 2019

Я немного заржавел и обновляю программу VB.Net, которую я написал в 2013 году, используя VS2017. Мне нужно было расширить массив My.Settings StringCollection на одну запись. Это была область действия пользователя, и я не мог понять, как расширить существующий массив, несмотря на часы онлайн-исследований и тестирования.

Я пытался использовать метод .Add, но мне сказали "не член String". Я попытался удалить "user.config."

Наконец-то я попробовал вот что: 1) Во время разработки в настройках я добавил дополнительное значение заполнителя в мою переменную StringCollection. 2) Измените область действия с пользователя на приложение. 3) Запустите программу. 4) Измените область обратно на Пользователь. Я подтвердил это, проверив My.Settings во время выполнения. То, что я хочу знать, это: Почему это сработало, и есть ли более элегантный способ сделать это?

    For index = 0 To 5 'Motor numbers
        'Changing upper index limit from 4 to 5 throws an Exception 
        strCommand = "(0," & index.ToString & ")"
        My.Settings.strMotor_Kp(index) = (Kpid(0, index))
        strCommand = "(1," & index.ToString & ")"
        My.Settings.strMotor_Ki(index) = (Kpid(1, index))
        strCommand = "(2," & index.ToString & ")"
        My.Settings.strMotor_Kd(index) = (Kpid(2, index))
    Next

1 Ответ

0 голосов
/ 05 июля 2019

Редактор StringCollection немного ограничен, вы можете легко добавлять строки, но, насколько мне известно, вставить одну в середине невозможно.

Но вы также можете изменить значения в app.config, перекомпилируйтепроект, а затем откройте настройки, после чего VS спросит вас

Значение параметра 'Foo' было изменено в файле app.config.... Хотите обновить значение в файле .settings?

Все это должно работать без необходимости переключать настройку в приложение и обратно в пользовательский режим.Просто скомпилируйте его, и тогда изменения будут отражены в app.config (user.config генерируется во время выполнения при вызове метода Save ()).

Только если пространство имен проекта изменилось, тогда старые записидолжен быть удален из app.config до перекомпиляции проекта, или пространство имен должно быть изменено в теге <[...].Properties.Settings>).

...