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少声明的话自己找。
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
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少声明的话自己找。
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
请教一下如何能使填充listview数据时不改变原来的列宽呢?
现在情况下已经设定好了列宽,可是只要一填数据,列宽就变了,变成各列等宽了.
我想实现只填充数据而不改变已定好的列宽,如何实现呢?
在每次用从新设置列宽
ListView1.ColumnHeaders(i).Width = ?