3

我在 ListView 上实现拖放。我已经设法将 ListViewItem 放在光标下,但我想在拖动时将 ListViewItem 放在鼠标光标。在 ListView-Control 上。

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

我想到了 ListView 中的 ItemMouseHover、MouseMove 等事件,但在拖动时它们不会被触发。超过它。

希望你能帮我...

问候,

英诺

PS:我正在使用.Net2.0

4

2 回答 2

2

您是否尝试过响应 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
  }
}
于 2009-10-19T13:20:38.320 回答
1

如果您在 ListView 中进行拖放,您可以通过查看ObjectListView(.NET WinForms ListView 的开源包装器)的代码学到很多东西。

如果你使用 ObjectListView 而不是普通的 ListView,很多事情,比如拖放,都会自动发生。

于 2009-10-20T09:24:03.847 回答