【问题标题】:putting multiple arrays into one single ListBox将多个数组放入一个 ListBox
【发布时间】:2013-09-28 00:08:49
【问题描述】:

我正在尝试将多个数组放入单个列表框中。下面是代码。当我让每个输出进入它自己的列表框时效果很好,但我试图将它们全部放在一个带有当前标题的列表框中。有人可以帮忙吗?最后一件事,我还希望将重复值放入另一列,但不知道如何。我所能做的就是消除重复项(想超越并显示消除了哪些数字)

Public Class Form1
    Dim randomNum As New Random()
    Dim SampleArray(19) As Integer
    Dim aryNums() As Integer = SampleArray
    Dim distinctNums = SampleArray.Distinct()

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ListBox1.Items.Clear()
        ListBox2.Items.Clear()
        ListBox3.Items.Clear()

        For i = 0 To 19
            SampleArray(i) = randomNum.Next(10, 100)
            ListBox1.Items.Add(SampleArray(i).ToString)
        Next
        Array.Sort(SampleArray)
        For i = 0 To SampleArray.GetUpperBound(0)
            ListBox2.Items.Add(SampleArray(i))
        Next
        For Each num In distinctNums
            ListBox3.Items.Add(num.ToString())
        Next
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        ListBox4.Items.Add("Index" & vbTab & "Random" & vbTab & "Sorted" & vbTab & "Unique")
        For i = 0 To 19
            SampleArray(i) = randomNum.Next(10, 100)
            ListBox4.Items.Add(i & vbTab & SampleArray(i).ToString)
            'ListBox4.Items.Add(SampleArray(i).ToString)
        Next
        Array.Sort(SampleArray)
        For i = 0 To SampleArray.GetUpperBound(0)
            ListBox4.Items.Add(vbTab & vbTab & SampleArray(i))
        Next
        For Each num In distinctNums
            ListBox4.Items.Add(vbTab & vbTab & vbTab & num.ToString())
        Next

    End Sub
End Class

【问题讨论】:

  • 请将其格式化为实际可读的内容。
  • 这里是完整的代码
  • 您最好先处理所有内容,而不是在列表框中进行多次传递。处理数组,创建结果字符串,可能将其存储在 List(Of String) 中,然后将结果发布到列表框。此外,您的第二个循环发布 SampleArray(i) 似乎缺少 .ToString
  • 问题是我不能高于或低于“下一个”字。当我这样做时,它说它没有被声明
  • Button1 完美。想让 button2 以我想要的方式显示到列表框中。想要每个标题下的每个数组的“索引、随机、排序、唯一”标题。还想添加另一个名为 Duplicates 的标题和代码以显示重复的数字。

标签: .net vb.net winforms listbox


【解决方案1】:

虽然列表视图更容易且更贴切,但使用列表框并不难。这是一种方法:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    ListBox4.Items.Clear()
    ListBox4.Items.Add("Index" & vbTab & "Random" & vbTab & "Sorted" & vbTab & "Unique" & vbTab & "Duplicates")
    For i = 0 To SampleArray.Count - 1
        SampleArray(i) = randomNum.Next(10, 100)
        ListBox4.Items.Add(i & vbTab & SampleArray(i).ToString)
        'ListBox4.Items.Add(SampleArray(i).ToString)
    Next
    Array.Sort(SampleArray)
    Dim distinctNums() As Integer = SampleArray.Distinct().ToArray
    For i = 0 To SampleArray.Count - 1
        ListBox4.Items(i + 1) = DirectCast(ListBox4.Items(i + 1), String) & vbTab & SampleArray(i).ToString
    Next
    For i = 0 To distinctNums.Count - 1
        ListBox4.Items(i + 1) = DirectCast(ListBox4.Items(i + 1), String) & vbTab & distinctNums(i).ToString()
    Next

    For i = 0 To SampleArray.Count - 2
        If SampleArray(i) = SampleArray(i + 1) Then
            ListBox4.Items(i + 1) = DirectCast(ListBox4.Items(i + 1), String) & vbTab & SampleArray(i).ToString()
        End If
    Next
End Sub

【讨论】:

    【解决方案2】:

    如果您想要多列listbox,最好使用listview。设置为显示网格,添加标题:

    ListView1.Columns.Add("header1", 80)
    ListView1.Columns.Add("header2", 120)
    

    对于你的联合列表,伪代码:

    dim myList as List(of string) = new List(of string)
    for each item in array1
        myList.Add(item)
    next
    for each item in array2
        myList.Add(item)
    next
    .....
    ' sort if necessary
    
    for each item in myList
         dim isDuplicate as Boolean = FindIfDup(item) ' In this method iterate listview to see if the item exists
         ListView1.Items.Add(new String(){item, iif(isDuplicate, "Duplicate", "")})
    next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多