listview如何知道选中了那一列?并且能不能固定某些列宽(不是全部列宽)不可变化?

解决方案 »

  1.   

    ListView1.SelectedItem
    ListView1.SelectedItem.Width
      

  2.   

    Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
    MsgBox ColumnHeader       '返回选择列的名字
    End Sub
      

  3.   

    Option Explicit
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const LVM_FIRST = &H1000&
    Private Const LVM_GETSUBITEMRECT = LVM_FIRST + 56&
    Private Type RECT
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End Type
    Private Function ColumnByX(lv As ListView, x As Single) As Long
      With lv
        Dim org As RECT, ax As Long, i As Long
        SendMessage .hwnd, LVM_GETSUBITEMRECT, i, org
        ax = Me.ScaleX(x, vbTwips, Me.ScaleMode) - org.Left
        For i = 1 To .ColumnHeaders.Count
          ax = ax - .ColumnHeaders.Item(i).Width
          If ax <= 0 Then
            Exit For
          End If
        Next
        If i > .ColumnHeaders.Count Then i = -1
      End With
      ColumnByX = i
    End Function
    Private Sub Form_Load()
        Dim i As Integer
        Dim itemx As ListItem
        
        For i = 1 To 100
            Set itemx = ListView1.ListItems.Add(, , CStr(i))
            ListView1.ListItems(i).SubItems(1) = i
            ListView1.ListItems(i).SubItems(2) = i
            ListView1.ListItems(i).SubItems(3) = i
            ListView1.ListItems(i).SubItems(4) = i
            ListView1.ListItems(i).SubItems(5) = i
        Next
    End SubPrivate Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        MsgBox ColumnByX(ListView1, x)
    End Sub
      

  4.   

    我想listview一开始就固定某些列宽度不能拉动,某些可以拉动。可以吗?
      

  5.   

    //我想listview一开始就固定某些列宽度不能拉动,某些可以拉动。可以吗?可以的,主要是子类处理通知消息,看这里Prevent ColumnHeader sizing
    http://www.vbcodemagician.dk/tips/cctrls_lvpreventresize.htm
      

  6.   

    为何ColumnHeader 中的文字居中了,连下面的list项也居中了,不能分开设置吗?
      

  7.   

    //我想listview一开始就固定某些列宽度不能拉动,某些可以拉动。可以吗?可以的,主要是子类处理通知消息,看这里/////////////////
    都說是子類處理,但是就是沒有找到能夠用的-_-