【问题标题】:Is there a way for a listview to add items Vertically instead of horizontally列表视图有没有办法垂直而不是水平添加项目
【发布时间】:2021-06-01 02:59:45
【问题描述】:

这段代码是一个冒泡排序,它从一个列表框排序到下一个列表框。 Listbox1 未排序,而 listbox2 已排序。

 Dim outpt1 As String = ""
    Dim ListOfString As New List(Of String)
    Dim alItems As New ArrayList

    ''Create list of strings (in this case, characters)
    For i As Integer = 0 To Me.ListBox1.Items.Count - 1
        Me.ListBox1.SetSelected(i, True)
        ListOfString.AddRange(ListBox1.Items(i).Split(" "))
    Next
    ''Sort and format
    For Each bub As String In BubbleSortString(ListOfString)
        outpt1 += bub & " "
    Next


    ListBox2.Items.Add(outpt1)

代码将未排序的列表全部添加到排序列表框中。每个项目都需要一行。任何帮助都非常感谢谢谢

【问题讨论】:

  • 标题显示“listview”,但您的代码中没有ListView。提供对问题的完整和清晰的解释,包括不告诉我们您正在使用您没有使用的控件。

标签: arrays vb.net listbox


【解决方案1】:

你认为正在发生的事情并没有发生。并不是在一行中添加了多个项目。看看你的代码。阅读!你给ListBox2.Items.Add打了多少次电话?一次。那么你要添加多少项目?一!想想你实际上在做什么。 outpt1 是一个 String 并且您正在将值连接到该 String。一旦你连接了所有的值,你就可以将那个String 添加到ListBox

如果那不是你想要的,那就不要这样做。摆脱String 变量,只需将每个值直接添加到ListBox。这就是您真正想要的 - 将项目添加到 ListBox - 这样做。

For Each bub As String In BubbleSortString(ListOfString)
    ListBox2.Items.Add(bub)
Next

当您编写代码而不知道它必须做什么时,您拥有的代码就是您最终得到的代码,即不仅仅是结果,还有到达那里的步骤。这就是为什么您应该首先制定逻辑,如果需要将其写下来,然后编写代码来实现该逻辑。如果你这样做了,你的算法就不可能包含将所有项目连接到一个字符串中的步骤。

【讨论】:

  • 非常感谢。这真的很有帮助,我很感激,谢谢
【解决方案2】:

我用包含空格的字符串填充了一个列表框。

Split 返回的数组被添加到 List(Of String) 中。请注意,为此代码和所有代码打开 Option Strict。 ItemsListBox 中是 Objects,所以我们需要 .ToString 以便可以使用 .SplitSplit 参数后面的小 c 告诉编译器这是 Char,这是 Split 所期望的。

接下来,我在List(Of String) 上使用了Sort 方法,并将排序列表添加到ListBox2

调试是显示我的 ListBox2 的内容。

Private lst As New List(Of String) From {"Mathew Smith", "Mark Jones", "Luke Name", "John Peter"}

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ListBox1.Items.AddRange(lst.ToArray)
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim ListOfString As New List(Of String)
    For i As Integer = 0 To Me.ListBox1.Items.Count - 1
        ListOfString.AddRange(ListBox1.Items(i).ToString.Split(" "c))
    Next
    ListOfString.Sort()
    ListBox2.Items.AddRange(ListOfString.ToArray)
    For Each item In ListBox2.Items
        Debug.Print(item.ToString)
    Next
    'Result in Immediate Window
    'John
    'Jones
    'Luke
    'Mark
    'Mathew
    'Name
    'Peter
    'Smith
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多