如题:
private void lvwBrowser_MouseHover(object sender, System.EventArgs e)
{
Point curPos = lvwBrowser.PointToClient(Cursor.Position);   
ListViewItem lvwItem  = lvwBrowser.GetItemAt(curPos.X,curPos.Y);   
          
if(lvwItem != null)   
{   
   int  count = 0;   
for(int i=0;i<lvwBrowser.Columns.Count;i++)   
{   
count  += lvwBrowser.Columns[i].Width;   
if(curPos.X <count)   
{   
string strName = lvwItem.SubItems[i].Text;   
break;   
}   
}   
}    }请问为什么下面对象 
ListViewItem lvwItem  = lvwBrowser.GetItemAt(curPos.X,curPos.Y);   
无论停在item上或不停在item上都为null 是有什么设置问题吗?
有什么更好的办法取得鼠标悬停item上的对象呢? 谢谢!!

解决方案 »

  1.   

    没有问题的,就像你的代码中写的一样就可以获取到鼠标指针下的ListviewItem了。我的测试代码和你的基本一样就可以的。我的代码如下:
    private void listView1_MouseHover(object sender, EventArgs e)
    {
    Point curPos = this.listView1.PointToClient(Control.MousePosition);   
    ListViewItem lvwItem  = this.listView1.GetItemAt(curPos.X,curPos.Y); if (lvwItem != null)
    {
    Console.WriteLine("aa");
    }
    }我使用的Control.MousePosition和你的Cursor.Position取值一样。
      

  2.   

    为何我下断点调试 得到空的lvwItem对象阿 是我环境问题吗?
      

  3.   

    你使用Console.WriteLine()来输出如果不为空就是了。可能当你断点调试的时候鼠标位置不正确了。
      

  4.   

    确实如 hbxtlhx 所说调试的时候不能移动鼠标 不然就会空哦. 谢谢啦