在listview控件中获取鼠标光标下的项目?

Joa*_*nge 3 .net c# listview winforms

基本上我正在尝试实现一个功能,如果用户按下一个键,我想找出鼠标光标下的项目.

所以我不使用鼠标事件,但键盘事件当然不会给我一个ListViewItem.

我只是不知道在什么空间我需要获得鼠标位置并将其转换为控件的空间.

有任何想法吗?

Fre*_*örk 13

如果您知道您感兴趣的ListView控件,则以下方法可以解决这个问题:

private ListViewItem GetItemFromPoint(ListView listView, Point mousePosition)
{
    // translate the mouse position from screen coordinates to 
    // client coordinates within the given ListView
    Point localPoint = listView.PointToClient(mousePosition);
    return listView.GetItemAt(localPoint.X, localPoint.Y);
}

// call it like this:
ListViewItem item = GetItemFromPoint(myListView, Cursor.Position);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果您在鼠标事件处理程序中执行此操作,例如MouseDoubleClick,则MouseEventArgs.Location已经是客户端相关的,因此您不希望调用PointToClient() (2认同)