TextBoxを自分で描画するには以下のようにやります。
this.SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
OnPaintBackground/OnPaintが有効になって自分で描画できます。
通常のコントロールではSetStyleに対して以下のようにUpdateStylesを呼んでやります。
this.UpdateStyles();
ただし、TextBoxに関してはHandleを再度作成しなければいけません。
this.RecreateHandle();
を代わりに使用します。
もし、コントロールのSetStyleでつまづいた場合はこちらも考えてみてください。