これはおそらく恥ずかしい質問ですが、MSDN Web サイトのヘルプを使用して赤い境界線を持つカスタム テキスト ボックスを作成しました。
UserControl クラスから継承し、その OnPaint() メソッドをオーバーライドしたことを理解しています。
コードで確認できないため、OnPaint() メソッドが呼び出されている場所を教えてもらえますか。
ここにコードがあります -
namespace CustomTextBox
{
public partial class BorderTextBox : UserControl
{
private TextBox textBox;
private Color myColor = Color.Red;
public BorderTextBox()
{
InitializeComponent();
this.textBox = new TextBox();
this.DoubleBuffered = true;
this.Padding = new Padding(2);
this.textBox.BorderStyle = BorderStyle.None;
this.textBox.Dock = DockStyle.Fill;
this.Controls.Add(this.textBox);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Pen borderPen = new Pen(myColor);
e.Graphics.DrawRectangle(borderPen,
new Rectangle(0, 0, this.ClientSize.Width - 1, this.ClientSize.Height - 1));
}
}
}