如何在拖动时获取 MouseCursor 下的 ListViewItem。超过它

发布于 2024-08-08 09:35:36 字数 339 浏览 9 评论 0原文

我正在实施拖放放在 ListView 上。当将 ListViewItem 放在鼠标上时,我已经设法在光标下获取 ListViewItem,但我想在拖动某物时在鼠标光标下获取 ListViewItem。在 ListView 控件上。

当您将文件拖到文件夹上时,我想像在 Windows 资源管理器中一样选择 ListViewItem (selected=true)。

我考虑过 ListView 中的 ItemMouseHover、MouseMove 等事件,但拖动时不会触发它们。超过它。

希望你能帮助我...

问候,

inno

P.S.:我正在使用.Net2.0

I'm implementing drag & drop on a ListView. I already managed to get the ListViewItem under the cursor when dropping on it but I would like to get the ListViewItem under the mouse cursor while I'm dragging sth. over the ListView-Control.

I would like to select the ListViewItem (selected=true) like in Windows Explorer when you are dragging files over a folder.

I thought about events like ItemMouseHover, MouseMove in the ListView but they are not fired when dragging sth. over it.

Hope you can help me...

Regards,

inno

P.S.: I'm using .Net2.0

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

追我者格杀勿论 2024-08-15 09:35:36

您是否尝试过响应 listview 类中的 DragOver 事件?你应该能够这样做。

private void listBox_DragOver(object sender, 
  DragEventArgs e)
{
  //for ListView
  var point = listView.PointToClient(new Point(e.X, e.Y));
  var item = listView.GetItemAt( point.X, point.Y);     
  if(item != null)
  {
     //do whatever - select it, etc
  }


  //or, for ListBox 
  var indexOfItem = 
    listBox.IndexFromPoint(listBox.PointToClient(new Point(e.X, e.Y)));
  if (indexOfItem != ListBox.NoMatches)
  {
     //do whatever - select it, etc
  }
}

Have you tried responding to the DragOver event in the listview class? You should be able to do it this way.

private void listBox_DragOver(object sender, 
  DragEventArgs e)
{
  //for ListView
  var point = listView.PointToClient(new Point(e.X, e.Y));
  var item = listView.GetItemAt( point.X, point.Y);     
  if(item != null)
  {
     //do whatever - select it, etc
  }


  //or, for ListBox 
  var indexOfItem = 
    listBox.IndexFromPoint(listBox.PointToClient(new Point(e.X, e.Y)));
  if (indexOfItem != ListBox.NoMatches)
  {
     //do whatever - select it, etc
  }
}
欢你一世 2024-08-15 09:35:36

如果您在 ListView 中进行拖放操作,则通过查看 ObjectListView(.NET WinForms ListView 的开源包装器)。

如果您使用 ObjectListView 而不是普通的 ListView,许多事情(例如拖放)会自动发生。

If you are doing drag and drop in a ListView, you learn a lot by looking at the code of ObjectListView (an open source wrapper around .NET WinForms ListView).

If you use an ObjectListView instead of a normal ListView, a lot of things, like drag and drop, happen automatically.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文