listview控件在已经填充数据后如何改变列宽?
在填充数据时可以指定每列的宽度,可是我想在填充以后再用代码设置一下各列的宽度,如何实现呢?
因为在填充数据时,为了通用性,不好设置每列的宽度.
请大家赐教.

解决方案 »

  1.   

    ListView1.ColumnHeaders(1).Width = 3000   '改变第1列的列宽参数就是指定第几列.
      

  2.   

    Public Enum LVSCW_Styles
       LVSCW_AUTOSIZE = -1
       LVSCW_AUTOSIZE_USEHEADER = -2
    End Enum
    Private Const LVM_FIRST As Long = &H1000
    Private Const LVM_SETCOLUMNWIDTH As Long = LVM_FIRST + 30Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" _
       (ByVal hwnd As Long, _
        ByVal Msg As Long, _
        ByVal wParam As Long, _
        ByVal lParam As Long) As Long
    '设置每列宽度
    Public Sub SetListViewColumnWidth(LVW As ListView, ByVal Style As LVSCW_Styles)
        Dim ColumnIndex As Long
        For ColumnIndex = 1 To LVW.ColumnHeaders.Count
            Call SendMessageLong(LVW.hwnd, LVM_SETCOLUMNWIDTH, ColumnIndex - 1, Style)
        Next
    End Sub少声明的话自己找。
      

  3.   


    Private Sub Command2_Click()
     Dim colX As ColumnHeader
      For intX = 1 To 6
       Set colX = ListView1.ColumnHeaders.Item(intX)
       colX.Text = "Field00 " & intX
       colX.Width = ListView1.Width / 6
    Next intX
    End Sub
      

  4.   

    谢谢上面老师:
    请教一下如何能使填充listview数据时不改变原来的列宽呢?
    现在情况下已经设定好了列宽,可是只要一填数据,列宽就变了,变成各列等宽了.
    我想实现只填充数据而不改变已定好的列宽,如何实现呢?
      

  5.   

    你是从新弄了表头了吧!
    在每次用从新设置列宽
    ListView1.ColumnHeaders(i).Width = ?