想实现在同一个ListView中拖动某行,进行行之间的位置改变,请问如何获得拖动后目的行是哪一行?如下例:listView
1 test1
2 test2
3 test3想选择1,开始拖动,然后鼠标放到3然后放下,想实现如下效果:...
2 test2
3 test3
1 test1
...请问如何获得最后鼠标放下的位置,HitTest不起作用,总是选择为第一行。

解决方案 »

  1.   

    在ListView的DragOver事件中同时结合  listview的hittext事件把拖动的行高亮
      

  2.   

    鼠标单击ListView的  时候,如何得到点的是哪一列?  
     
    ///////////////////////////////////////  
    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  
     
      

  3.   

    daisy8675(莫依)得分,与我最后的解决方案基本一致。
      

  4.   

    我倒,这帖子的时间夸度也太大了吧。其实这个我早提交了FAQ嘛-_-#汗一个