我有一个具有 100-200 个默认值的列表框,并且启用了多选简单模式。
我将选定的文本项保存在字符串列表中:
Private Sub ListBox_Styles_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox_Styles.SelectedIndexChanged
Styles_List.Clear()
For Each item In ListBox_Styles.SelectedItems : Styles_List.Add(item) : Next
Save_INI_settings()
End Sub
之后,子调用“Save_INI_settings”过程,然后我将值保存到 INI 文件中,如下所示:
WriteINIFile.WriteLine("Styles=" & String.Join(",", Styles_List.ToArray))
...产生这个结果:
Styles=Alternative,Electro,Pop,Rock
现在,在我的应用程序的下一次加载中,我如何通过选择 ini 的文本值来设置列表框选定项?
这就是我加载 INI 设置的方式:
If ValueName = "Styles".ToLower Then
For Each Item In Value.split(",")
' ListBox_Styles.SetSelected(Item, True)
Next
End If
...其中“ValueName” var 是“Styles”,“Value” var 是“Alternative,Electro,Pop,Rock”,所以对于我来说:
Alternative
Electro
Pop
Rock
PS:我不想将索引整数保存在 INI 文件中而不是文本项中,我也不想将此设置存储在应用程序设置部分中。
UPDATE:
这就是我现在的做法:
If ValueName = "Styles".ToLower Then
For Each Item In Value.split(",")
' Try to add the string as is
ListBox_Styles.SelectedItems.Add(Item)
' Try to add the string as TitleCase
ListBox_Styles.SelectedItems.Add(Char.ToUpper(Item(0)) + StrConv(Item.Substring(1), VbStrConv.Lowercase))
' Try to add the string as WordCase
ListBox_Styles.SelectedItems.Add(System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Item))
Next
End If
按预期工作,但迭代次数过多