protected virtual void OnNeedPaint(bool needLayout, Rectangle invalidRect) { if (_needPaint != null) { // Redraw the entire with the ribbon for the button location invalidRect = new Rectangle(0, invalidRect.Y - 3, _ribbon.Width, invalidRect.Height + 3); _needPaint(this, new NeedLayoutEventArgs(needLayout, invalidRect)); } }