Как сохранить и загрузить пользовательские настройки в файл? ВБ 2010

Я пишу приложение, которое позволяет пользователю создавать отчет, отображающий метаданные о базе данных. Предполагается, что пользователь строит отчет через интерфейс приложения и в любой момент может сохранить свои настройки в файл для использования в другом приложении.

Теперь я искал и видел статьи о настройках приложений и т.п., но мой вопрос (я думаю) несколько отличается:

Скажем, у пользователя есть выбор элементов, из которых он хочет построить отчет, как мне сохранить эти выборы (сделанные с помощью переключателей) в файл настроек, чтобы при повторном запуске программы пользователь мог открыть настройки файл и разрешить использование предыдущих настроек для другого отчета. Я также хочу, чтобы пользователь мог настроить макет страницы отчета во время выполнения и включить его в файл настроек для других целей в будущем.

Надеюсь, мое объяснение адекватно, я сам немного затрудняюсь понять задачу из-за многословия человека, который ее поставил, но, увы, мы работаем на то, что имеем!


person AdamWest    schedule 20.08.2012    source источник


Ответы (1)


Вы можете хранить любой серийный контент в своих пользовательских настройках. Поэтому просто определите свой класс выбора пользователя и класс макета страницы, и вы можете сделать его постоянным, как любую строку или целое число.
(вы можете увидеть, как здесь: Пользовательское перечисление как тип настройки приложения в C#? )

Изменить. В этом посте вы можете видеть, что можете использовать любой объект в своих настройках, в том числе тот, который вы определили сами в своем проекте. Для этого вы должны указать полное имя класса, включая NameSpace вашего проекта (MyNameSpace.MyPreferenceStorageClass).

Редактировать 2: поэтому я опишу больше с небольшим примером.
1) вам нужно определить класс, который будет хранить ваши настройки. Я выбираю произвольные имена для своего примера:

Public Class UserChoices
    Public Property DisplayInColor As Boolean = False
    Public Property UseKeyboard As Boolean = True
End Class

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

2) затем перейдите в окно настроек вашего проекта. Добавьте переменную настроек с нужным именем.
Я назвал ее AppUserChoices. Затем выберите тип, перейдите в «Обзор», затем введите MyNameSpace.UserChoices в качестве типа.
(Очевидно, замените «MyNameSpace» вашим пространством имен... ;-))

3) вы закончили. Я написал небольшой код для игры с настройками (я поместил его в обработчик событий Startup моего приложения):

Запустите его несколько раз. В первый раз он должен сообщить, что выбор пользователя ничего не значит. Тогда они будут в порядке, и настройка цвета будет каждый раз переключаться между цветным и черно-белым.

   Private Sub Application_Startup
                   (ByVal sender As System.Object, ByVal e As System.Windows.StartupEventArgs)
        If My.Settings.AppUserChoices Is Nothing Then
            MessageBox.Show("AppUserChoices is nothing")
            My.Settings.AppUserChoices = New UserChoices
            My.Settings.Save()
        Else
            MessageBox.Show("AppUserChoices is  **not** nothing")
            My.Settings.AppUserChoices.DisplayInColor = Not My.Settings.AppUserChoices.DisplayInColor
            My.Settings.Save()
            If My.Settings.AppUserChoices.DisplayInColor Then _
                      MessageBox.Show("show colors") _
                Else _
                      MessageBox.Show("show in B&W")
        End If
    End Sub

4) Обратите внимание, что вам может понадобиться класс UserChoices для реализации INotifyPropertyChange на случай, если вы измените их в коде. (Пример: если пользователь изменяет «DisplayInColor», вы можете установить то же значение для «PrintInColor».)

5) для предпочтения пользователя для макета страницы создайте также класс для хранения настроек макета и нового элемента в настройках таким же образом.

6) для привязки к значению настроек, ну, пусть другой пост StackOverflow сделает эту работу: Привязать к значению, указанному в настройках

person GameAlchemist    schedule 21.08.2012
comment
Это не то, что я искал, я использую VB - person AdamWest; 22.08.2012
comment
VB и до-диез очень близки. Смотрите мою правку. - person GameAlchemist; 22.08.2012
comment
В любом случае, вы можете уточнить свой ответ? Я хотел бы сохранить выбор флажков в файле настроек, чтобы при запуске программы они могли загружать настройки и выбирать соответствующие флажки. - person AdamWest; 24.08.2012