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

时间:2009-06-25 18:57:59

标签: c# .net winforms listview

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

所以我不使用鼠标事件,而是使用当然不会给我ListViewItem的键盘事件。

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

有什么想法吗?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

取决于鼠标位置的键盘动作听起来有点不正统。键盘操作通常应该会影响某些在屏幕上突出显示/聚焦/选中的项目,可以通过以前的键盘操作或之前鼠标点击该项目来选择。

要记住一些事情,否则你将会遇到“独特”(令人困惑的)用户互动。