C#绘图组成控件

本文关键字:控件 绘图 | 更新日期: 2023-09-27 18:27:18

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

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

这个控件放在表单上时效果很好。但是,我需要把它放在另一个用户控件中:

public class TitleBox : UserControl
{
    public TitleLabel TitleLabel {get; set;}
    public TitleBox()
    {
        this.TitleLabel = new TitleTable();
        this.TitleLabel.Location = new Point(10, 10);
    }
}

然而,执行以上操作并不能绘制第一个控件。我需要在第二个控件中挂接它的Paint事件吗?

C#绘图组成控件

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

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