好的,我将尝试通过代码来解释:
例如,我有一个用户控件和一个按钮类。我想公开 Button 属性,并使它们在设计器的 MyControl 属性中可见。
class MyControl : UserControl
{
private MyButton button;
button.ChangeStyle("Selected");
}
class MyButton : Button
{
private Color buttonColor;
public void ChangeStyle(string styleName)
{
if (styleName == "Selected")
this.BackColor = buttonColor;
}
[Browsable(true)]
[Category("Button style")]
public Color ButtonColor
{
get { return buttonColor; }
set { buttonColor = value; }
}
}
这是一个简单的例子。通常我有 5 种不同的样式,包括每种样式的背景和前景色。因此,我不想在 MyControl 类中管理颜色,而是在 MyButton 类中定义它们。但是这种方式的问题是 MyButton 类中的属性在设计器中不可见,因为它只关注 MyControl 属性。
顺便提一句。忽略代码示例中缺少的构造函数和其他基本类的东西
我不能使用:
[Category("Wonder Control")]
public Color ButtonBackColor { get { return button.BackColor; } set { button.BackColor = value; }
因为我在 MyControl 中有 30 个按钮(一个月中的天数),我不能只引用一个对象。