在listview中将按钮添加为子项VB.NET

在listview中将按钮添加为子项VB.NET,vb.net,Vb.net,你好。我在listview中遇到了这个问题。我想在每个对应的数据中添加listview中的控件按钮。我的意思是,每一行都有数据,名为“Update”的控件按钮也会显示在listview的最后一列。下面的代码不起作用,我不知道如何解决这个问题 Dim li As ListViewItem Dim dt As New DataTable Dim da As SqlDataAdapter connect() Dim sql As String = "SELEC

你好。我在listview中遇到了这个问题。我想在每个对应的数据中添加listview中的控件按钮。我的意思是,每一行都有数据,名为“Update”的控件按钮也会显示在listview的最后一列。下面的代码不起作用,我不知道如何解决这个问题

    Dim li As ListViewItem
    Dim dt As New DataTable
    Dim da As SqlDataAdapter

    connect()
    Dim sql As String = "SELECT * FROM tbl_Data"
    da = New SqlDataAdapter(sql, cn)
    da.Fill(dt)
    lv.Items.Clear()
    For i = 0 To dt.Rows.Count - 1
        li = lv.Items.Add(dt.Rows(i).ItemArray(0).ToString)
        li.SubItems.Add(dt.Rows(i).ItemArray(1).ToString)
        li.SubItems.Add(dt.Rows(i).ItemArray(2).ToString)
        li.SubItems.Add(dt.Rows(i).ItemArray(3).ToString)
        li.SubItems.Add(dt.Rows(i).ItemArray(4).ToString)
        li.SubItems.Add(dt.Rows(i).ItemArray(5).ToString)
        li.SubItems.Add(dt.Rows(i).ItemArray(6).ToString)
        li.SubItems.Add(dt.Rows(i).ItemArray(7).ToString)

    Next

    Dim b = New Button
    b.Name = "update"
    b.Text = "UPDATE"
    lv.Controls.Add(b)

您可以创建如下自定义类:

Public Class CustomItem
    Inherits ListViewItem

    Public customButton As Button

    Public Sub New(ByVal buttonText As String, ByRef listView As ListView)
        Me.Text = buttonText
        listView.Items.Add(Me)
        customButton = New Button
        customButton.Left = Me.GetBounds(ItemBoundsPortion.Entire).Left
        customButton.Left = Me.GetBounds(ItemBoundsPortion.Entire).Left
        customButton.Width = Me.GetBounds(ItemBoundsPortion.Entire).Width
        customButton.Text = buttonText
        listView.Controls.Add(customButton)
    End Sub

End Class
Dim item As New CustomItem("Update", ListView1)
然后将新的
CustomItem
插入
ListView
,如下所示:

Public Class CustomItem
    Inherits ListViewItem

    Public customButton As Button

    Public Sub New(ByVal buttonText As String, ByRef listView As ListView)
        Me.Text = buttonText
        listView.Items.Add(Me)
        customButton = New Button
        customButton.Left = Me.GetBounds(ItemBoundsPortion.Entire).Left
        customButton.Left = Me.GetBounds(ItemBoundsPortion.Entire).Left
        customButton.Width = Me.GetBounds(ItemBoundsPortion.Entire).Width
        customButton.Text = buttonText
        listView.Controls.Add(customButton)
    End Sub

End Class
Dim item As New CustomItem("Update", ListView1)

这是一个开始。它没有实现很多功能,但您可以添加这些功能。

这可能会有所帮助。对于DB应用程序来说,ListView是一个糟糕的选择。不仅要创建每一行和每一列,而且所有内容都是字符串。使用DataGridView要容易得多,它已经有一个按钮列类型。现在我可以在listview中显示按钮,但我希望这个按钮显示为子项。