使用 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 制作一个必须包含高分表的游戏。 我正在使用名为lstscoresListView 控件将分数行存储在名为NameScore 的两列中。 用户必须猜测正确时输入到名为lstwords 的列表框中的单词。 我在Application.Settings 中设置了两件事:settingnamesettingscore,两者都具有类型: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.ItemsMy.Settings.settingname.Add(it0.Text)NextMy.Settings.Save() 好的。您是否尝试过加载完整的解决方案?您如何检查 my.settings 的内容是否更改?它应该在文件系统中的某个地方。 VS 的内容不会改变,它们是默认的。 要检查设置是否已更改,我双击My Project 并转到Settingssettingname 设置仍然具有默认的 xml 代码。将分数带到 listview 控件我使用我在原始问题中放入的代码

以上是关于使用 ListView 控件保存/加载 My.Settings - vb.net的主要内容,如果未能解决你的问题,请参考以下文章

vb6加载时提示出错,窗体log文件中错误信息为:控件 XX 的类 MSComctlLib.ListView 不是一个已加载的控件类。

listview控件用法?

ListView 控件加载非常缓慢

使用共享首选项保存和重新加载 ListView [保存 onDestroy()]

如何清空android ListView控件的内容

使用listview空控件展示数据