我试图改变自定义控件的文本框的背景颜色(定制控件的名称是“TC1”和文本框的名字是“txtb”)通过单击不在自定义控件中的“更改”按钮。我应该如何解决这个问题?
感谢, 韦恩Scicluna
我试图改变自定义控件的文本框的背景颜色(定制控件的名称是“TC1”和文本框的名字是“txtb”)通过单击不在自定义控件中的“更改”按钮。我应该如何解决这个问题?
感谢, 韦恩Scicluna
选项1:
你可以让你TextBox
公开。要这样做,请转到您的用户控件的设计器,然后选择Modifier
属性并将该值设置为公共。
现在你可以在你的控制之外访问它。例如,如果您有与userControl1
和名称的文本框的用户控件的一个实例是txtb
:
userControl1.txtb.BackColor = Color.Red;
选项2:
作为另一个选项,您可以创建一个公共财产,在该属性获取或设置您的文本框的颜色。
public Color TextBoxBackColor
{
get
{
return txtb.BackColor;
}
set
{
txtb.BackColor = value;
}
}
现在您可以在您的控制之外访问此属性。例如,如果您有与userControl1
名用户控件的实例:
userControl1.TextBoxBackColor = Color.Red;
使TextBox公开中断封装。最好在自定义控件上提供一个新的属性。 –
@EricJ。总的来说,我同意你的看法,但有时候你有一些权衡,你更愿意公开控制权。 –
所以通过暴露控制我基本上可以编辑该控件的所有属性。我对吗? –
既然你正在建设一个用户控制,改变文本框的颜色可以被视为控制的功能,并可以提供通过添加一个属性给客户。
[Browsable(true)] // allows you to change it in the designer
public Color TextBoxBackColor
{
get { return txtb.BackColor; }
set { txtb.BackColor = value; }
}
默认情况下,该公共属性是'Browsable'。 –
如果您对自定义控件的源代码有控制权,请为其提供公共属性以更改该颜色,因为它可以访问其子控件。 –