0

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

期待どおりに動作しますが、反復が多すぎます

4

1 に答える 1