0

我有一个问题,当我从 myListBox中取出项目并将它们转换为单行字符串时,它会复制最后一个项目。我的目标是让它只从 中获取项目ListBox,并将其转换为单行文本,用逗号 ( ,) 分隔。

我花了一段时间,但我在这个线程上找到了一些代码,它在大多数情况下都有效,但最后一项在转换为字符串时总是重复的。我正在使用的代码是:

        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

我有一种感觉,它必须处理删除逗号的代码,因为它是一个再次&=调用itemDim 的代码。但我似乎无法弄清楚该怎么做。

输出示例如下所示: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 回答