通过ItemText设置ListBox选择项?

时间:2013-05-22 15:29:52

标签: .net vb.net string listbox ini

我有一个包含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是“样式”和“值”var是“替代,电子,流行,摇滚”所以我得到了这个:

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

按预期工作,但迭代次数过多

1 个答案:

答案 0 :(得分:1)

鉴于您的列表框只包含字符串,那么您可以简单地将字符串读入SelectedItems集合

   .....
   For Each Item In Value.split(",")
        Listbox.SelectedItems.Add(Item)     
   Next

修改
按照下面的评论,我可以建议查看System.Globalization命名空间。 在这里,您可以找到转换为给定字符串

的正确案例的方法TextInfo.ToTitleCase
   Imports System.Globalization

   Dim ti = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo
   For Each Item In Value.split(",")
      Listbox.SelectedItems.Add(to.ToTitleCase(Item))
   Next