Эквивалент `My.Settings.Reset`, но для одного конкретного параметра - PullRequest
1 голос
/ 23 апреля 2019

Я пишу приложение Windows Forms в Visual Studio, и у меня есть параметр приложения пользовательской области типа string со значением по умолчанию, которое указывается во время разработки на странице "Настройки" дизайнера проекта .

В моем приложении у меня есть диалоговое окно, в котором пользователь может изменить настройку на пользовательское значение. Диалоговое окно также имеет флажок «Использовать значение по умолчанию». Если этот флажок установлен, я хочу, чтобы настройка вернулась к значению приложения по умолчанию.

Мне удалось сделать это «статически», установив для него текущее значение по умолчанию, например: My.Settings.MyStringSetting = My.Settings.Properties.Item("MyStringSetting").DefaultValue. Однако это не идеально, потому что оно не является постоянным. Если приложение по умолчанию изменяется из-за обновления, пользовательское значение все равно будет установлено на старое значение по умолчанию.

Я хотел бы знать, есть ли способ просто полностью удалить переопределение пользовательских настроек из файла user.config, как это делает My.Settings.Reset, но для этого единственного параметра. Так что проверка «Использовать настройки по умолчанию» останется верной, даже если приложение по умолчанию будет обновлено.

Возможно ли это?

1 Ответ

0 голосов
/ 24 апреля 2019

Я не уверен, есть ли способ полностью удалить одно свойство settings из файла user.config.Тем не менее, есть один способ обойти эту проблему:

Если из-за обновления приложение по умолчанию изменится, пользовательское значение все равно будет установлено на старое значение по умолчанию.

.. должен сделать что-то вроде этого:

  • Добавить свойство настроек с именем UpgradeRequired 1 и установить его значение по умолчанию True.
  • Добавьте еще одно свойство, чтобы отобразить статус Checked флажка «Использовать значение по умолчанию» (если у вас его еще нет).Для этой демонстрации я назову это UseMyStringSettingDefaultValue.
  • Когда у вас будет обновление для программного обеспечения, UpgradeRequired будет True по умолчанию (при условии, что версия сборкиизменено) .Поэтому при запуске приложения выполните следующий код:

    If My.Settings.UpgradeRequired Then
        My.Settings.Upgrade()
        My.Settings.UpgradeRequired = False
        If My.Settings.UseMyStringSettingDefaultValue Then
            My.Settings.MyStringSetting = ' The new default value ↴
                My.Settings.Properties.Item("MyStringSetting").DefaultValue.ToString()
        End If
        My.Settings.Save()
    End If
    

1 Возможно, он вам все равно понадобится для корректного обновления настроек .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...