Сохранение/загрузка My.Settings с помощью элемента управления ListView - vb.net

Я делаю игру на Visual Basic, которая должна содержать таблицу рекордов. Я использую элемент управления ListView с именем lstscores для хранения строк оценок в двух столбцах с именами Name и Score. Пользователь должен угадать слова, введенные в ListBox с именем lstwords, если они правильные. Я установил 2 вещи в Application.Settings: settingname и settingscore с типом: System.Collections.Specialized.StringCollectino, областью действия: user и значением: Nothing.

Когда пользователь нажимает кнопку «Сохранить», я в основном хочу взять имя пользователя и оценку и сохранить их в настройках соответственно. Поэтому, когда я открою форму в следующий раз, я смогу загрузить настройки обратно в тот же элемент управления ListView.

Я исследовал в течение нескольких часов, и я не смог найти ничего, что точно соответствовало бы моим потребностям.

Я не могу предоставить свой код, так как я перепробовал все возможное, насколько мне известно, и ничего не сработало.

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

Спасибо

Dim arr(1) As String
    Dim score As Integer

    inputname = txtname.Text
    score = lstwords.Items.Count

    arr(0) = inputname
    arr(1) = score
    lstscores.Items.Add(New ListViewItem(arr))

person Paul B    schedule 01.06.2013    source источник


Ответы (1)


Вы можете использовать комбинацию методов Save() и Reload() для хранения ваших данных. Когда пользователь нажимает кнопку «Сохранить», вы можете повторять свой ListView, добавляя содержимое ListView.Items[n] в коллекцию имен и содержимое подэлемента (ListViewItem.SubItems[0]) в коллекцию оценок. Затем используйте My.Settings.Save() для сохранения данных. Чтобы ваши данные вернулись в ListView после запуска, используйте My.Settings.Reload() (например, в событии Form.Load) и повторите его обратно. Вот пример сохранения итерации (не проверено):

For Each it0 in lstscores.Items
    My.Settings.settingname.Add(it0.Text)
    My.Settings.settingscore.Add(it0.SubItems[0].Text)
Next
My.Settings.Save()
person user35443    schedule 01.06.2013
comment
хорошо, поэтому я попробовал ваш код только с строкой имени настройки, и он даже не сохраняет это в my.settings - person Paul B; 01.06.2013
comment
Вы использовали My.Settings.Save() ? - person user35443; 01.06.2013
comment
В порядке. Вы пробовали полное решение с загрузкой? Как вы проверяете, изменилось ли содержимое my.settings? Он должен быть где-то в файловой системе. Содержимое VS не изменится, оно по умолчанию. - person user35443; 01.06.2013
comment
чтобы проверить, изменились ли настройки, я дважды щелкаю My Project и иду Settings, а настройка settingname по-прежнему имеет код xml по умолчанию. чтобы перенести счет в элемент управления списком, я использую код, который я указал в исходном вопросе. - person Paul B; 01.06.2013
comment
Это неправильно. В Visual Studio есть только значения по умолчанию. My.Settings.Save() редактирует специальный файл, находящийся в AppData (не знаю, как в более новых системах). Вы можете попробовать найти файл конфигурации там, или вы можете просто завершить Form.Load, добавив My.Settings.Reload() и установив там точку останова (тогда вы можете использовать Watch для проверки данных в My.Settings). - person user35443; 01.06.2013