2

您好,我在 VB.NET 中有一个 Listview,我想在其中插入一个名称和一个按钮,如下所示:名称应显示在 listview 的左侧,按钮显示在右侧(就像我在里面有一行一样listeview 和放置在该行左侧和右侧的两个控件)那么,在 VB.NET 中是否有可能,如果是这样的话怎么办?我希望我的问题很清楚。谢谢。

4

2 回答 2

3

不容易。但是 DataGridView 可以轻松处理这个问题:

在此处输入图像描述

    DataGridView1.Columns.AddRange(New DataGridViewColumn(1) _
                                    {New DataGridViewTextBoxColumn() With _
                                     {.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill, .HeaderText = "Text"},
                                     New DataGridViewButtonColumn() With _
                                     {.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill, .HeaderText = "Button"}})
    DataGridView1.Rows.Add({"row 1 text", "row 1 button"})
    DataGridView1.Rows.Add({"row 2 text", "row 2 button"})

这些属性可以从设计器中设置,您可能会绑定 datagridview 而不是手动添加行。

编辑删除按钮单击行,使用 CellContentClick 事件:

Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    'check it the button column being clicked, and check they are not clicking the column heading
    If e.ColumnIndex = 1 And e.RowIndex >= 0 Then
        DataGridView1.Rows.RemoveAt(e.RowIndex)
    End If
End Sub

请注意,如果您确实使用数据绑定,则应从数据对象中删除该行,而不是从 datagridview

编辑将项目的所有列提取到列表中:

 Dim columnOneValues As New List(Of String)

 For Each row As DataGridViewRow In DataGridView1.Rows
        columnOneValues.Add(row.Cells(0).Value.ToString)
 Next
于 2012-12-01T06:54:39.023 回答
2

简短的回答:没有。

更长的答案:是的,但这是不平凡的,你不能用 stock 来做ListView

您必须扩展类,自己处理控件的绘制,根据ListViewItem. 此外,如果用户对ListView列重新排序,则没有简单的方法可以获取新的列顺序。

有关自定义的示例,请参阅此代码项目页面ListView

于 2012-12-01T00:51:15.453 回答