You may not find these comments an "answer" to your question, but ... I think this is the only way I can be helpful to you, given the limited information you provide.
1. I suggest you create a new WinForms project, put a TreeView on it, and define handlers for the TreeView's:
BeforeSelect, AfterSelect, NodeMouseClick, NodeDoubleMouseClick, Click, DoubleClick, MouseDown, MouseClick, MouseDoubleClick Events.
In those handlers put a simple Console.WriteLine statement printing out the name of the Event. Like this:
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
Console.WriteLine("treeView1_NodeMouseClick");
}
And then, run the project four times with these actions on your part:
a. slowly mouse click on a TreeView Node and release the Mouse.
b. at a slightly faster rate, do several mouse clicks on the TreeView Node.
c. double-click on the TreeView Node, releasing the Mouse as fast as possible.
d. do a series of double-clicks on a TreeView Node as fast as possible.
After each "run" of the Project, examine the Output window, and consider what you observe.
2. In code where you have DragDrop implemented define similar Event handlers for ALL Events related to DragDrop, like ItemDrag. Run, start a drag but stop the drag before you move outside the boundaries of the TreeView, stop the program, examine the output. Repeat for each possible part of a DragDrop operation.
Why do I suggest you do this: because I believe you will observe behavior that will lead you to change your interaction-design as it is. Once you understand the fundamentals of run-time interaction between Controls and Mouse, and then the DragDrop Events, you will, I believe, be able to make wise choices in your implementation strategy.
good luck, Bill