/ / Rilevamento di un DragDrop su un oggetto TreeView - c #, wpf, interfaccia utente, trascinamento della selezione, visualizzazione ad albero

Rilevamento di un DragDrop su un oggetto TreeView - c #, wpf, interfaccia utente, trascinamento della selezione, visualizzazione ad albero

Sto facendo un drag drop da un controllo utente suun diverso TreeView. Tuttavia, come posso rilevare la caduta nella voce della vista ad albero? Sono in grado di rilevare se c'è un calo nel TreeView, ma questo non è l'elemento. Posso fare un evento TreeViewItem.Drop, ma questo è per quando faccio cadere un oggetto all'interno del TreeView, non da un altro controllo.

Ho provato a vedere il TreeView a fuoco,tuttavia, questo non lo ha risolto. Sono in grado di rilevare DragEnter / Leave sul TreeView e gli elementi di esso, ma non il rilascio. Ho dato un'occhiata ad altri argomenti che dicono di avere un DragOver per potenzialmente risolvere questo problema, comunque, ma non ha funzionato.

risposte:

1 per risposta № 1

Prova questo:

    private void treeView1_DragDrop(object sender, DragEventArgs e)
{
Point DropXY = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(DropXY);

MessageBox.Show(DestinationNode.Text);
}

[MODIFICARE] Nota: è necessario che la proprietà AllowDrop di TreeView sia impostata su true. E tu devi gestire questo evento:

private void treeView1_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}