Ich bin noch auf eine dritte Möglichkeit gestoßen, daß Verhalten an sich zu implementieren, in dem man mit
GetHitTestInfoAt auf htOnItem, htOnIndent oder htOnRight prüft. Das finde ich aber etwas zu fummelig, habe Grobmotoriker (Mediziner) als Kunden.
Sherlock
Das ist genau das was ich meinte.
Das Problem was ich mit dem CTRL-Taste gedrückt halten habe, ist das ich es mit Kopieren verbinde, d.h. das dragged child / node wird nicht an die neue Position gezogen, sondern es wird eine Kopie des childs erzeugt und an der gewünschten Stelle eingefügt.
Dieses Verhalten haben wir so (neben dem oben genannten) schon einmal in einem TreeView verwendet und es ist mMn das, was man von "überall" her sonst beim Drag & Drop gewohnt ist, sei es eine Zelle in Excel, eine Datei im Explorer, ...
Die Timer und Warten Geschichte die du oben erwähnt hast verstehe ich so: du verweilst auf einem Node, dieser klappt auf und du kannst den gedraggten Node an der richtigen Position in den ChildNodes des gerade geöffneten Nodes einfügen. Falls dem so ist, sehe ich neben der Wartzezeit das Problem dann, wenn der Node auf den du draggst noch keine Childnodes hat und nicht aufklappen kann.