Inconsistent Drag and Drop API
Every System.Windows.Forms.Control has the following events
- public event DragEventHandler DragDrop
- public event DragEventHandler DragEnter
- public event EventHandler DragLeave
- public event DragEventHandler DragOver
This means, when the user drags something away of the control, you can’t access the data anymore (unless you cached it somewhere when the DragEnter or DragOver events occured). Here is an extract from Microsoft patterns and practives on Event Design
If you define an event that takes an EventArgs instance instead of a derived class that you define, you cannot add data to the event in later versions. For that reason, it is preferable to create an empty derived class of EventArgs. This allows you add data to the event in later versions without introducing breaking changes.