c# - 自定义控件 onPaint 事件不起作用

2026-01-06 10:11:42

嘿人们我有一个问题,我正在编写一个自定义控件。我的控件继承自 Windows.Forms.Control 并且我试图覆盖 OnPaint 方法。这个问题有点奇怪,因为它只有在我在表单中包含一个控件时才有效,如果我添加另一个控件,那么第二个控件不会被绘制,但是 OnPaint 方法会为所有控件调用。所以我想要的是我所有的自定义控件都被绘制,这里不仅有一个是我的代码:

如果您运行代码,您将看到屏幕上只出现一个红色矩形。

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)));

}

}