Запазване/зареждане на My.Settings с ListView Control - vb.net

Създавам игра на Visual Basic, която трябва да съдържа таблица с високи резултати. Използвам контрола ListView с име lstscores, за да съхранявам редове с резултати в 2 колони, наречени 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