こんにちは、私はカスタムコントロールを書いているときに問題があります。私のコントロールは Windows.Forms.Control を継承しており、OnPaint メソッドをオーバーライドしようとしています。別のコントロールを追加すると、フォームに 1 つのコントロールを含める場合にのみ機能するため、問題は少し奇妙です。2 番目のコントロールは描画されませんが、すべてのコントロールに対して OnPaint メソッドが呼び出されます。だから私が望むのは、すべてのカスタムコントロールが描画されることです。ここにあるのは私のコードだけではありません:
コードを実行すると、画面に赤い四角形が 1 つだけ表示されることがわかります。
public partial class Form1 : Form
{
myControl one = new myControl(0, 0);
myControl two = new myControl(100, 0);
public Form1()
{
InitializeComponent();
Controls.Add(one);
Controls.Add(two);
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
public class myControl:Control
{
public myControl(int x, int y)
{
Location = new Point(x, y);
Size = new Size(100, 20);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Pen myPen = new Pen(Color.Red);
e.Graphics.DrawRectangle(myPen, new Rectangle(Location, new Size(Size.Width - 1, Size.Height - 1)));
}
}