protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);
            isMouseDown = base.Bounds.Contains(e.Location);

            for (int i = listChildControls.Count - 1; i >= 0; i--)
            {
                WLControlBase ctl = listChildControls[i];
                if (!ctl.Visible)
                    continue;
                if (ctl.Bounds.Contains(e.Location))
                {
                    if (ctl.Enabled)
                    {
                        capturedControl = ctl;
                        ctl.MouseOperation(e, MouseOperationType.Down);
                    }
                    break;
                }
            }
        }
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);
            if (isMouseDown)
            {
                if (capturedControl != null)
                    capturedControl.MouseOperation(e, MouseOperationType.Move);
            }
            else
            {
                for (int i = listChildControls.Count - 1; i >= 0; i--)
                {
                    WLControlBase ctl = listChildControls[i];

                    if (!ctl.Visible)
                        continue;

                    if (ctl.Bounds.Contains(e.Location))
                    {
                        if (lastMouseMoveControl != null && lastMouseMoveControl != ctl)
                            lastMouseMoveControl.MouseOperation(Point.Empty, MouseOperationType.Leave);
                        ctl.MouseOperation(e, MouseOperationType.Move);
                        lastMouseMoveControl = ctl;
                        return;
                    }
                }
                if (lastMouseMoveControl != null)
                    lastMouseMoveControl.MouseOperation(Point.Empty, MouseOperationType.Leave);
                lastMouseMoveControl = null;
            }
        }
 protected override void OnMouseLeave(MouseEventArgs e)
 {
     base.OnMouseLeave(e);
     if (lastMouseMoveControl != null)
         lastMouseMoveControl.MouseOperation(Point.Empty, MouseOperationType.Leave);
     lastMouseMoveControl = null;
     isMouseDown = false;
 }
 protected override void OnMouseUp(MouseEventArgs e)
 {
     base.OnMouseUp(e);
     if (capturedControl != null)
         capturedControl.MouseOperation(e, MouseOperationType.Up);
     capturedControl = null;
     isMouseDown = false;
 }