Du zeichnest erst, rufst dann aber base.OnPaint() auf, somit zeichnet die Basisklasse über dich drüber. Ruf zuerst base.OnPaint auf, dann zeichnest du dein Rechteck. Das was @RodFromGermany meint gibt es schon gewrappt als ControlPaint.DrawFocusRectangle()