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」なので、for を使用すると次のようになります。
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
期待どおりに動作しますが、反復が多すぎます