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); }