使用 ListView 控件保存/加载 My.Settings - vb.net
Posted
技术标签:
【中文标题】使用 ListView 控件保存/加载 My.Settings - vb.net【英文标题】:Saving/Loading My.Settings with ListView Control - vb.net 【发布时间】:2013-06-01 13:33:35 【问题描述】:我正在用 Visual Basic 制作一个必须包含高分表的游戏。
我正在使用名为lstscores
的ListView
控件将分数行存储在名为Name
和Score
的两列中。
用户必须猜测正确时输入到名为lstwords
的列表框中的单词。
我在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))
【问题讨论】:
【参考方案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()
【讨论】:
好的,所以我只用 settingname 行尝试了你的代码,它甚至没有将它保存到 my.settings 你用My.Settings.Save()
了吗?
For Each it0 In lstscores.Items
My.Settings.settingname.Add(it0.Text)
Next
My.Settings.Save()
好的。您是否尝试过加载完整的解决方案?您如何检查 my.settings 的内容是否更改?它应该在文件系统中的某个地方。 VS 的内容不会改变,它们是默认的。
要检查设置是否已更改,我双击My Project
并转到Settings
,settingname
设置仍然具有默认的 xml 代码。将分数带到 listview 控件我使用我在原始问题中放入的代码以上是关于使用 ListView 控件保存/加载 My.Settings - vb.net的主要内容,如果未能解决你的问题,请参考以下文章
vb6加载时提示出错,窗体log文件中错误信息为:控件 XX 的类 MSComctlLib.ListView 不是一个已加载的控件类。