【问题标题】:Listview column Header not displaying VB.NetListview 列标题不显示 VB.Net
【发布时间】:2012-02-24 20:21:52
【问题描述】:

我没有在 listView 中获取列标题。只有一项(0)不显示子项。这是我的代码。告诉我它有什么问题。 提前谢谢你。

Dim PTCode As Integer = CInt(ChildPatnameTag)
ClearSQl()

    CheckState()
    strSql = "select tCode,tprice from patTests where pCode=" & PTCode
    strConn.Open()
    Dim TCmdSelect As New OleDbCommand(strSql, strConn)
    Dim TReader As OleDbDataReader = TCmdSelect.ExecuteReader()
    'Column Header
    Dim header1, header2 As ColumnHeader
    header1 = New ColumnHeader
    header1.TextAlign = HorizontalAlignment.Left
    header1.Text = "Test"
    header1.Width = 250
    header2 = New ColumnHeader
    header2.TextAlign = HorizontalAlignment.Left
    header2.Text = "Price"
    header2.Width = 50
    With lvwPatTests
        .CheckBoxes = True
        .GridLines = True
        .FullRowSelect = True
        .HideSelection = False
        .MultiSelect = False
        .Columns.Add("Test")
        .Columns.Add("Price")
    End With
    If TReader.HasRows Then
        Do While TReader.Read
            ClearSQl()
            strSql = "Select tName from tests where tCode=" & TReader("tCode")
            Dim TCCmdSelect As New OleDbCommand(strSql, strConn)
            Dim TCReader As OleDbDataReader = TCCmdSelect.ExecuteReader()
            If TCReader.HasRows Then
                Do While TCReader.Read
                      For i = 0 To TCReader.FieldCount - 1
                        ' Create List View Item (Row)  
                       Dim lvi As New ListViewItem
                        ' First Column can be the listview item's Text  
                        lvi.Text = TCReader.Item("tName").ToString
                        ' Second Column is the first sub item  
                        lvi.SubItems.Add(TReader.Item("tprice"))
                        MsgBox(TCReader.Item("tName").ToString)
                        MsgBox(TReader.Item("tprice"))
                        ' Add the ListViewItem to the ListView  
                        lvwPatTests.Items.Add(lvi)
                    Next
                Loop
                TCCmdSelect.Dispose()
                TCReader.Close()
                TCReader = Nothing
            Else
                TCCmdSelect.Dispose()
                TCReader.Close()
                TCReader = Nothing
            End If
        Loop
        TReader.Close()
        TReader = Nothing
    End If

【问题讨论】:

  • 设置对象等于Nothing是没有意义的。虽然您确实需要在实现IDisposable 的对象上调用Dispose 方法,但最好将它们的创建包装在Using 语句中。这段代码中有很多“噪音”。
  • ListView Headers Don't Show Up 的可能重复项

标签: .net vb.net winforms listview


【解决方案1】:

您需要将 ListView 控件的 View 属性更改为 Details 才能看到列和子项:

With lvwPatTests
  .View = View.Details

  .CheckBoxes = True
  .GridLines = True
  .FullRowSelect = True
  .HideSelection = False
  .MultiSelect = False
  .Columns.Add("Test")
  .Columns.Add("Price")
End With

【讨论】:

    【解决方案2】:

    您已经拥有这些对象。把它们传进去:

       With lvwPatTests
            .CheckBoxes = True
            .GridLines = True
            .FullRowSelect = True
            .HideSelection = False
            .MultiSelect = False
            .Columns.Add(header1)
            .Columns.Add(header2)
        End With
    

    【讨论】:

      猜你喜欢
      • 2010-12-28
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      相关资源
      最近更新 更多