2009-10-19 7 views
3

Je suis en train de mettre en œuvre glisser & déposer sur un ListView. J'ai déjà réussi à obtenir le ListViewItem sous le curseur en le laissant tomber mais je voudrais obtenir le ListViewItem sous le curseur de la souris pendant que je traîne sth. sur le contrôle ListView.Comment obtenir ListViewItem sous MouseCursor tout en faisant glisser sth. dessus

Je voudrais sélectionner ListViewItem (selected = true) comme dans l'Explorateur Windows lorsque vous faites glisser des fichiers sur un dossier.

J'ai pensé à des événements comme ItemMouseHover, MouseMove dans ListView mais ils ne sont pas déclenchés lorsque vous faites glisser sth. par-dessus.

Espoir vous pouvez me aider ...

Cordialement,

inno

PS: J'utilise .Net2.0

Répondre

2

Avez-vous essayé de répondre à l'événement dans DragOver la classe listview? Vous devriez être capable de le faire de cette façon.

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

Wow, la brève description allemande de DragOver dit sth. like: Se produit, si un élément est déplacé au-delà des limites du ListView-Control (donc je pensais que DragOver se produisait une seule fois si un élément était déplacé * out * des bordures du ListView). Merci beaucoup !!! – Inno

+1

Semble pour détailler les informations ListBox, pas les informations ListView –

+0

@PeterRitchie Oui, c'était juste ListBox. Ajout du bloc ListView, puisque c'est la raison d'être de la question. –

1

Si vous faites glisser-déposer dans un ListView, on apprend beaucoup en regardant le code de ObjectListView (une enveloppe open source autour de .NET WinForms ListView). Si vous utilisez un ObjectListView au lieu d'un ListView normal, un grand nombre de choses, comme le glisser-déposer, se produisent automatiquement.

+1

Ai-je raison de dire que vous êtes le gars derrière ObjectListView (a eu un bref aperçu de votre profil à SO et à CodeProject);). Merci pour l'indice. ObjectListView est superbe! – Inno

+1

Oui. Je suis l'auteur. Donc, je suis partial - mais aussi précis dans ce cas :) – Grammarian

Questions connexes