简介
我已经查找了如何将列表框中的项目保存到my.settings一段时间,并且有很多不同的答案。我已经尝试了所有这些(有点过分地说),但没有一个真的奏效。这可能是因为我在编程时出现了错误的解释或新的初学阶段而做错了。
所以我有一个用户可以设置一堆设置的表单。当他关闭应用程序并重新打开它时,所有这些都将保持原样。文本框,复选框等工作正常,但由于某种原因,列表框比我希望保存更难。
我的列表框
用户将项目添加到列表框中(在文本框c:\test
中写入tbpath1
之类的内容,按下按钮btnAdd1
,文本将成为列表框中的项目{{ 1}})
lbchannel1
我的尝试 (可能是十次尝试中的一次)
所以这是我迄今为止的尝试之一。我希望这很容易。
Private Sub btnAdd1_Click(sender As Object, e As EventArgs) Handles btnAdd1.Click
Dim str As String = tbPath1.Text
If str.Contains("\") Then
lbchannel1.Items.AddRange(tbPath1.Text.Split(vbNewLine))
tbext1_1.Text = (tbext1_1.Text)
在上述尝试中,我收到错误My.Settings._lbchannel1.Clear()
For Each item In lbchannel1.Items
My.Settings._lbchannel1.Add(item)
Next
My.Settings.Save()
我猜测它与不是字符串等的项目有关,但是我不知道该怎么做。有人可以用简单的解释方式将其包起来吗?
答案 0 :(得分:1)
如果您未在IDE中添加至少一个项目,则VS不会初始化您在“设置”中创建的集合,因为它看起来并不像您正在使用它。
If My.Settings._lbchannel1 Is Nothing Then
My.Settings._lbchannel1 = New System.Collections.Specialized.StringCollection()
End If
My.Settings._lbchannel1.Clear()
For Each item In lbchannel1.Items
My.Settings._lbchannel1.Add(item)
Next
My.Settings.Save()
你也可以"欺骗"它为你初始化它。通过“设置”选项卡添加项目,保存项目,然后删除项目。
您还可以创建List(of String)
来存储数据。使用1-2行代码自行序列化,并将其用作列表框的DataSource。它比将物品从一个集合穿梭到另一个集合并使它们保持同步更简单。 This answer shows序列化List(Of Class)
但原则相同。