protected override void OnMouseMove(MouseEventArgs e)
            {
                base.OnMouseMove(e);

                FlowLayoutPanel2 p   = (FlowLayoutPanel2)this.Parent;
                Accordion        acc = (Accordion)p.Parent;

                if (!acc.AllowMouseResize)
                {
                    return;
                }

                // PerformLayout causes the control to move which triggers a MouseMove
                // even though the mouse didn't move. Thus, the absolute location is
                // used to determine if the mouse actually moved. There is probably a
                // better way to handle the resizing.
                Point pt = this.PointToScreen(e.Location);

                if (oldPoint == pt)
                {
                    return;
                }
                oldPoint = pt;

                if (isGrabbing)
                {
                    int dy = pt.Y - grabPoint.Y;
                    dh = Math.Max(0, dhOrig + dy);
                    p.UpdateDeltaHeights();
                    p.PerformLayout();
                    resetLocked = false;
                }
                else
                {
                    int by = this.Height - e.Y;
                    if (by < this.Padding.Bottom)
                    {
                        this.Cursor = cursorResize;
                    }
                    else
                    {
                        this.Cursor = this.DefaultCursor;
                    }
                }
            }
            public void UpdateDeltaHeights()
            {
                Accordion acc = (Accordion)this.Parent;

                UpdateDeltaHeights(acc.FillLastOpened, acc.FillModeGrowOnly, acc.FillResetOnCollapse);
            }