3

ListView にドラッグ アンド ドロップを実装しています。ドロップするときにカーソルの下に ListViewItem を取得することができましたが、sthをドラッグしているときにマウス カーソルの下に ListViewItem を取得したいと思います。ListView-Control を介して。

ファイルをフォルダーにドラッグするときに、Windows エクスプローラーのように ListViewItem (selected=true) を選択したいと思います。

ListView の ItemMouseHover、MouseMove などのイベントについて考えましたが、sth をドラッグしても発生しません。その上。

あなたが私を助けてくれることを願っています...

よろしく、

いんの

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 のオープン ソース ラッパー) のコードを見ることで多くのことを学ぶことができます。

通常の ListView の代わりに ObjectListView を使用すると、ドラッグ アンド ドロップなどの多くのことが自動的に行われます。

于 2009-10-20T09:24:03.847 に答える