我有一个自定义控件,它基本上在该字符串下面绘制一个字符串和一行:
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事件?
答案 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);
}
}