【发布时间】:2009-06-25 18:57:59
【问题描述】:
基本上我正在尝试实现一个功能,如果用户按下一个键,我想找出鼠标光标下的项目。
所以我不使用鼠标事件,但键盘事件当然不会给我 ListViewItem。
我只是不知道我需要在什么空间中获取鼠标位置并将其转换为控件的空间。
有什么想法吗?
【问题讨论】:
-
这个devX article 谈论你想要做什么。
基本上我正在尝试实现一个功能,如果用户按下一个键,我想找出鼠标光标下的项目。
所以我不使用鼠标事件,但键盘事件当然不会给我 ListViewItem。
我只是不知道我需要在什么空间中获取鼠标位置并将其转换为控件的空间。
有什么想法吗?
【问题讨论】:
如果你知道你对哪个 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);
【讨论】:
取决于鼠标位置的键盘动作听起来有点不合常规。键盘操作通常会影响屏幕上突出显示/聚焦/选择的某些项目,无论是通过先前的键盘操作还是通过鼠标单击该项目来选择。
请记住一些事情,否则您最终会遇到“独特的”(令人困惑的)用户交互。
【讨论】: