将多个数组放入一个ListBox中

时间:2013-09-28 00:08:49

标签: .net vb.net winforms listbox

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

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

2 个答案:

答案 0 :(得分:0)

如果您想要多列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

答案 1 :(得分:0)

虽然列表视图更简单,但更适合使用列表框并不是很难。这是一种方式:

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