该行正在覆盖而不是添加行列表视图

The row is overwriting and not adding rows listview

我正在将数据从 form1(Home) 发送到 form2 (StatusReport),但是从 form1 获取的信息没有添加到 form2 的下一行,而是覆盖了同一行。我在表格 1 上做了,每行添加,但是从表格 1 发送数据到表格 2,它没有正确添加。

表格 1 代码

Dim recipientName As String = TextBox5.Text
Dim address As String = TextBox6.Text
Dim contactNumber As String = TextBox7.Text
Dim deliveryMode As String = ComboBox3.SelectedItem
Dim deliveryDate As Date = DateTimePicker1.Value.Date

表格 2 代码

Dim recipientName As String = Home.TextBox5.Text
Dim address As String = Home.TextBox6.Text
Dim contactNumber As String = Home.TextBox7.Text
Dim deliveryMode As String = Home.ComboBox3.SelectedItem
Dim deliveryDate As Date = Home.DateTimePicker1.Value.Date
Dim orderStatus As String = "Pending"

Dim str(6) As String
Dim lvItem As ListViewItem
str(0) = recipientName
str(1) = address
str(2) = contactNumber
str(3) = deliveryMode
str(4) = deliveryDate
str(5) = orderStatus
lvItem = New ListViewItem(str)
ListView1.Items.Add(lvItem)

使用字符串数组创建新的 ListViewItem 会创建单个 ListViewItem,该数组表示子项。

单独创建 ListViewItems 并添加它们可能更简单,如下所示:

lv.Items.Add(New ListViewItem(recipientName))
lv.Items.Add(New ListViewItem(Address))
lv.Items.Add(New ListViewItem(contactNumber))
lv.Items.Add(New ListViewItem(deliveryMode))
lv.Items.Add(New ListViewItem(recipientName))

等等

您可能想先清除这些项目:

lv.Items.Clear()

目前还不清楚您是如何在这两种形式之间来回切换的,但这应该可以帮助您入门。在添加任何项目之前设置 ListView 中的列。您可以在代码中或在设计时执行一次。 ListView 保持 ListViewItems。第一列是 Text 属性 后面的列是 SubItems.

Private Sub CreateLVColumns()
    'you will probably want to do this at design time
    With ListView1.Columns
        .Add("Name")
        .Add("Address")
        .Add("Number")
        .Add("Mode")
        .Add("Date")
        .Add("Status")
    End With
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim lvi As New ListViewItem(Home.TextBox5.Text)
    With lvi.SubItems
        .Add(Home.TextBox6.Text)
        .Add(Home.TextBox7.Text)
        .Add(Home.ComboBox3.Text)
        .Add(Home.DateTimePicker1.Value.Date.ToString) 'you can add a format to the ToString
        .Add("Pending")
    End With
    ListView1.Items.Add(lvi)
End Sub

找到答案,这只是基础。刚刚添加了一些代码以适应所需的系统。

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim itm As New ListViewItem(TextBox1.Text)

        itm.SubItems.Add(TextBox2.Text)
        itm.SubItems.Add(TextBox3.Text)

        Form2.ListView1.Items.Add(itm)

        Form2.Show()
        Me.Hide()
    End Sub
End Class
Public Class Form2
    Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Form1.Show()
    End Sub
End Class

把它留在这里,因为它也可以帮助其他人。