将属性继承到自定义控件C#

时间:2013-04-05 14:46:22

标签: c# asp.net ascx asp.net-customcontrol

我有一个自定义控件,我用一堆标准的windows asp控件创建它。

问题:

是否可以在不重新发明轮子的情况下将父控件的属性继承到自定义控件中?

例如,我有一个带有Button,TextBox和Label的控件。

通常我可以通过Lable1.Text访问该控件的属性,但是当这些控件位于自定义控件中时,如何在不单独封装该控件的所有属性的情况下访问它们。

我希望有类似CustomControl1.Lable1.Text的东西,或者这是不可能的

如果我用这个 public Label lbMovieName         {             get {return this.lbMoveName; }             设置{lbMovieName = value; }         }

我得到了我需要的东西,但请告诉我为什么不这样做?

3 个答案:

答案 0 :(得分:2)

最简单的方法是通过公共只读属性公开控件:

public Label MyLabel
{
    get { return this.Label1; }
}

然而,由于以下几个原因,仅封装您想要公开的值绝对是一个更清晰的解决方案:

  1. 在这种情况下,您可以抽象出实际控件类型与绑定到Label - 如果您公开控件,则很难用MyNewCoolLabel替换Label,例如
  2. 您可能会暴露更多您想要的东西 - 客户可以更改标签的显示属性等。

答案 1 :(得分:1)

如果您试图避免创建属性,可以将控件公开(这不是声音OO开发)。正如其他人已经提到的那样,您可以更好地了解您希望通过房产分享的信息。

答案 2 :(得分:0)

我认为,最佳方法和最佳实践是创建自定义控件的属性,仅显示您需要的内容。您控制范围内的其他所有内容都应保密。像这样:

public string LabelText {
    get { return this.Label1.Text; }
    set { this.Label1.Text = value; }
}

...等等您需要公开的其他属性。这将为您在设计师中提供良好的intellsense响应。