Domanda

sto implementando il drag & drop su una ListView. Ho già riuscito ad ottenere il ListViewItem sotto il cursore quando far cadere su di essa, ma mi piacerebbe ottenere il ListViewItem sotto il cursore del mouse , mentre che sto trascinando qc. sopra il ListView-Control.

Vorrei selezionare il ListViewItem (selezionato = true) come in Windows Explorer quando si sta trascinando i file su una cartella.

Ho pensato a eventi come ItemMouseHover, MouseMove nella ListView, ma non sono licenziati durante il trascinamento qc. su di esso.

Spero che mi può aiutare ...

Saluti,

Inno

P.S .: Sto usando .Net2.0

È stato utile?

Soluzione

Hai provato rispondere all'evento DragOver nella classe ListView? Si dovrebbe essere in grado di farlo in questo modo.

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
  }
}

Altri suggerimenti

Se si sta facendo il drag and drop in un ListView, si impara molto, cercando in codice di ObjectListView (un wrapper open source intorno NET WinForms ListView).

Se si utilizza un'ObjectListView al posto di un normale ListView, un sacco di cose, come il drag and drop, avviene automaticamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top