C#绘制组成控件

时间:2014-10-20 08:50:29

标签: c# winforms user-controls

我有一个自定义控件,它基本上在该字符串下面绘制一个字符串和一行:

public class TitleLabel : UserControl  
{
    //Properties here...

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        e.Graphics.DrawString(Caption, Font, brush, 0, 0);
        e.Graphics.DrawLine(pen, 1, captionSize.Height + 2, this.Width - 1, captionSize.Height + 2);
    }
}

此控件放置在表单上时可以正常工作。但是,我需要将它放在另一个usercontrol中:

public class TitleBox : UserControl
{
    public TitleLabel TitleLabel {get; set;}

    public TitleBox()
    {
        this.TitleLabel = new TitleTable();
        this.TitleLabel.Location = new Point(10, 10);
    }
}

但是,执行上述操作并不会绘制第一个控件。我是否需要在第二个控件中挂接它的Paint事件?

1 个答案:

答案 0 :(得分:1)

TitleBox 中创建 TitleLabel 控件的实例是不够的。此外,您必须将新创建的控件添加到 TitleBox UserControl.Controls 属性中(此属性存储用户控件中包含的控件集合),例如:< / p>

public class TitleBox : UserControl
{
    public TitleLabel TitleLabel {get; set;}

    public TitleBox()
    {
        this.TitleLabel = new TitleTable();
        this.TitleLabel.Location = new Point(10, 10);

        this.Controls.Add(this.TitleLabel);
    }
}