日期:2014-05-19  浏览次数:21190 次

关于listView 鼠标悬停获取当前Item问题
如题:
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上的对象呢?   谢谢!!



------解决方案--------------------
mark
------解决方案--------------------
没有问题的,就像你的代码中写的一样就可以获取到鼠标指针下的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取值一样。