0

からアイテムを取得ListBoxして単一行の文字列に変換すると、最後のアイテムが複製されるという問題があります。私の目標は、 からアイテムだけを取得し、ListBoxそれをコンマ ( ) で区切られた 1 行のテキストに変換すること,です。

しばらく時間がかかりましたが、このスレッドでいくつかのコードを見つけました。ほとんどの場合は機能しますが、文字列に変換すると最後の項目が常に複製されます。私が使用しているコードは次のとおりです。

        Dim item As Object
        Dim List As String
      
        ' Other unrelated code

        ' Credit: T0AD - https://www.tek-tips.com/viewthread.cfm?qid=678275
        For Each item In Form1.ListBox1_lstbox.Items
            List &= item & ","
        Next

        'To remove the last comma.
        List &= item.SubString(0, item.Length - 0) 
        ' This is weird, but setting item.Length - 1 actually removes two characters.

        ' Add text to textbox
        TextBox1.Text = List

コンマを削除するコードは、 Dim を再度&=呼び出すものであるため、対処する必要があると感じています。itemしかし、私は何をすべきか理解できないようです。

出力の例は次のようになります。Item1,Item2,Item3,Item3

これが欲しいとき:Item1,Item2,Item3

4

1 に答える 1

1

あなたの問題はこの行にあります。

List &= item.SubString(0, item.Length - 0)

で別の文字列を追加しListてい&=ます。追加する文字列は、ループitemからの最終的な値です。For Each

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If ListBox1.Items.Count = 0 Then
        MessageBox.Show("There are no items in the list box.")
        Exit Sub
    End If
    Dim List As String = ""
    For Each item In ListBox1.Items
        List &= item.ToString & ","
    Next
    List = List.Substring(0, List.Length - 1)
    TextBox1.Text = List
End Sub

@Andrew Morton がコメントで提供する追加のソリューション。ListBox にアイテムを含める必要はありません。

TextBox1.Text = String.Join(",", ListBox1.Items.Cast(Of Object))
于 2021-08-15T18:44:16.947 に答える