次の小さなクラスを使用して、WinFormsアプリケーションで使用するカスタムボタンを作成しました
public class MyButton : Button
{
protected override void OnPaint(PaintEventArgs e)
{
this.BackColor = Color.ForestGreen;
base.OnPaint(e);
}
}
私は単にアプリケーションをカスタマイズ可能にして、ボタンの色(そしてやがては他のコントロール)を1か所で変更するだけでよく、その変更がアプリケーション全体に反映されるようにしたいと考えています。
上記のコードを使用してカスタムボタンを作成した後、すべての標準のSystem.Windows.Forms.Buttons()をMyNamespace.MyButton()に置き換えることにしました。ただし、新しいボタンはすべて画面上で変更されて表示されますが、テキストボックス(私は変更していません)などの他のコントロールは、画面上にまったくレンダリングされません。ただし、アプリケーションでウィンドウをクリックしてドラッグすると、欠落しているすべてのコントロールが突然表示されます。
何が原因なのかわかりません。誰かアドバイスしてもらえますか?