///<summary> ///Called when a drag-and-drop operation leaves the control designer view. ///</summary> /// ///<param name="e">An <see cref="T:System.EventArgs"></see> that provides data for the event. </param> protected override void OnDragLeave(EventArgs e) { if (forwardOnDrag) { forwardOnDrag = false; WizardStepDesigner currentWizardStepDesigner = GetDesigner(); if (currentWizardStepDesigner == null) { return; } currentWizardStepDesigner.OnDragLeaveInternal(e); return; } base.OnDragLeave(e); }
///<summary> ///Called when a drag-and-drop object is dragged over the control designer view. ///</summary> /// ///<param name="de">A <see cref="T:System.Windows.Forms.DragEventArgs"></see> that provides data for the event. </param> protected override void OnDragOver(DragEventArgs de) { WizardControl control = Control as WizardControl; if (control == null || control.WizardSteps.Count <= 0) { de.Effect = DragDropEffects.None; return; } WizardStep step = control.WizardSteps[control.CurrentStepIndex]; Point pt = step.PointToClient(new Point(de.X, de.Y)); WizardStepDesigner wizardStepDesigner = GetWizardStepDesigner(step); Rectangle clientRectangle = step.ClientRectangle; if (!clientRectangle.Contains(pt)) { if (!forwardOnDrag) { de.Effect = DragDropEffects.None; return; } forwardOnDrag = false; wizardStepDesigner.OnDragLeaveInternal(EventArgs.Empty); base.OnDragEnter(de); return; } else { if (!forwardOnDrag) { base.OnDragLeave(EventArgs.Empty); wizardStepDesigner.OnDragEnterInternal(de); forwardOnDrag = true; return; } wizardStepDesigner.OnDragOverInternal(de); return; } }