自定义控件OnPaint不会触发

时间:2014-03-08 17:41:43

标签: c# winforms graphics onpaint

我有以下自定义Control

public class Line : Control
{
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        using (var p = new Pen(Color.Black, 3))
        {
            var point1 = new Point(234, 118);
            var point2 = new Point(293, 228);
            e.Graphics.DrawLine(p, point1, point2);
        }
    }
}

我在Form添加了Line类的新实例作为新控件:

Controls.Add(new Line());

问题是没有调用OnPaint方法并且没有绘制线。为什么?我该如何解决?

1 个答案:

答案 0 :(得分:3)

你没有给它一个大小,尝试创建一个构造函数并在那里设置默认大小,你似乎也在使用父控件坐标,我会使用Usercontrol的位置来设置你的起始位置而只是关注使用包含线的控件的宽度和高度。

public  Line()
{
     Size = new Size(500, 500);
}