关于listView 鼠标悬停获取当前Item问题

CH_MARS 2007-07-17 01:27:54
如题:
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上的对象呢? 谢谢!!

...全文
423 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sqllong 2007-07-24
  • 打赏
  • 举报
回复
MARK
CH_MARS 2007-07-17
  • 打赏
  • 举报
回复
确实如 hbxtlhx 所说调试的时候不能移动鼠标 不然就会空哦. 谢谢啦
CH_MARS 2007-07-17
  • 打赏
  • 举报
回复
好的 我看看去.
北京的雾霾天 2007-07-17
  • 打赏
  • 举报
回复
你使用Console.WriteLine()来输出如果不为空就是了。

可能当你断点调试的时候鼠标位置不正确了。
CH_MARS 2007-07-17
  • 打赏
  • 举报
回复
为何我下断点调试 得到空的lvwItem对象阿 是我环境问题吗?
北京的雾霾天 2007-07-17
  • 打赏
  • 举报
回复
没有问题的,就像你的代码中写的一样就可以获取到鼠标指针下的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取值一样。
Anders_lt 2007-07-17
  • 打赏
  • 举报
回复
mark

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧