想实现在同一个ListView中拖动某行,进行行之间的位置改变,请问如何获得拖动后目的行是哪一行?如下例:listView
1 test1
2 test2
3 test3想选择1,开始拖动,然后鼠标放到3然后放下,想实现如下效果:...
2 test2
3 test3
1 test1
...请问如何获得最后鼠标放下的位置,HitTest不起作用,总是选择为第一行。
1 test1
2 test2
3 test3想选择1,开始拖动,然后鼠标放到3然后放下,想实现如下效果:...
2 test2
3 test3
1 test1
...请问如何获得最后鼠标放下的位置,HitTest不起作用,总是选择为第一行。
///////////////////////////////////////
Option Explicit
Dim a As Integer
Dim i As Integer
Private Sub Form_Load()
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add , , "main"
ListView1.ColumnHeaders.Add , , "sub1"
ListView1.ColumnHeaders.Add , , "sub2"
ListView1.ListItems.Add , "test1", "test1"
ListView1.ListItems("test1").SubItems(1) = "test1-1"
ListView1.ListItems("test1").SubItems(2) = "test1-2"
ListView1.ListItems.Add , "test2", "test2"
ListView1.ListItems("test2").SubItems(1) = "test2-1"
ListView1.ListItems("test2").SubItems(2) = "test2-2"
ListView1.FullRowSelect = True
End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
a = x - ListView1.SelectedItem.Left
For i = 1 To ListView1.ColumnHeaders.Count
If (ListView1.ColumnHeaders(i).Left <= a) And (a <= ListView1.ColumnHeaders(i).Left + ListView1.ColumnHeaders(i).Width) Then
Me.Label1.Caption = "第" & i & "列": Exit For
End If
Next i
End Sub