C# 如何将ListViewItem拖到鼠标下方或上方时将其置于鼠标下方

C# 如何将ListViewItem拖到鼠标下方或上方时将其置于鼠标下方,c#,winforms,listview,drag-and-drop,listviewitem,C#,Winforms,Listview,Drag And Drop,Listviewitem,我正在ListView上实现拖放。当我在ListView控件上拖动某物时,我已经设法在光标下放置ListViewItem,但我想在鼠标光标下放置ListViewItem 当您在文件夹上拖动文件时,我希望像在Windows资源管理器中一样选择ListViewItem(selected=true) 我曾考虑过类似ListView中的ItemMouseHover、MouseMove之类的事件,但它们在拖动某个对象时不会被触发 希望你能帮助我 问候, 因诺 注意:我正在使用.Net2.0您是否尝试在li

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

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

我曾考虑过类似ListView中的ItemMouseHover、MouseMove之类的事件,但它们在拖动某个对象时不会被触发

希望你能帮助我

问候,

因诺


注意:我正在使用.Net2.0

您是否尝试在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
  }
}

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


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

Wow,德文对DragOver的简短描述是这样说的:如果元素被拖动到ListView控件的边界上,就会发生(所以我认为如果将元素拖出ListView的边界,DragOver只会出现一次)。非常感谢!!!似乎是详细的列表框信息,而不是列表视图information@PeterRitchie是的,只是ListBox。也添加了ListView块,因为这就是问题的目的。我想你是ObjectListView背后的人吗(在SO和CodeProject上看了一下你的个人资料);)。谢谢你的提示。ObjectListView看起来很棒!是的。我是作者。所以,我有偏见——但在这种情况下也是准确的:)