Hail Stack!
I’m having a hard time trying to figure out why my treeview (or any other component, even the form itself) won’t fire the event DragDrop.
I’ve settled my form like this:
A Form with a Panel inside.
The Panel have a TreeView, and this TreeView (MyTree) has the following code:
MyTree.AllowDrop = true;
MyTree.DragDrop += new System.Windows.Forms.DragEventHandler(onDragDrop);
MyTree.DragEnter += new System.Windows.Forms.DragEventHandler(onDragEnter);
MyTree.DragLeave += new System.EventHandler(onDragLeave);
MyTree.DragOver += new System.Windows.Forms.DragEventHandler(onDragOver);
The handlers looks like this:
private void onDragEnter(object sender, DragEventArgs e)
{
Console.WriteLine(" === DragEnter === ");
}
private void onDragLeave(object sender, EventArgs e)
{
Console.WriteLine(" === DragLeave === ");
}
private void onDragOver(object sender, DragEventArgs e)
{
Console.WriteLine(" === DragOver === ");
}
private void onDragDrop(object sender, DragEventArgs e)
{
Console.WriteLine(" === DragDrop === ");
}
When I test my app, dragging a *.txt file (or anything) the output are something like:
=== DragEnter ===
=== DragOver ===
=== DragOver ===
...
=== DragOver ===
=== DragLeave ===
The last line ( === DragLeave === ) wasn’t meant to be a leave event.
In fact, this line is printed when I release the mouse button over my TreeView.
I’m I doing something terribly wrong?
You need to set
e.EffectinDragOverto something other thanNoneto tell the system that you’re willing to be dropped on.