如何让用户控件中的自定义设计器属性在 运行 时具有价值?
How to get custom designer properties in user control to have value at run-time?
我创建了一个包含标签、复选框和按钮的复合用户控件。我已经在表单设计器中设置了某些属性。
public partial class ctlBoundCheckButton : UserControl
{
[Browsable(true)]
public string _chkText { get; set; }
public string _btnText { get; set; }
public string _lblText { get; set; }
public ctlBoundCheckButton()
{
InitializeComponent();
checkBox1.Text = _chkText; // _chkText is null :(
button1.Text = _btnText;
label1.Text = _lblText;
}
当我将此用户控件放到窗体上时,自定义属性在窗体设计器中显示良好,我可以为它们赋值:
但属性在 运行 时为空。正如您在控件的构造函数中看到的那样,值保持为空。在复合自定义控件中设置自定义属性的正确方法是什么?
按照其他人的建议,您可以尝试在get set方法中设置属性。
这是一个代码示例,您可以参考。
public partial class ctlBoundCheckButton : UserControl
{
[Browsable(true)]
public string _chkText
{
get { return checkBox1.Text; }
set { checkBox1.Text=value; }
}
public string _btnText
{
get { return button1.Text; }
set { button1.Text = value; }
}
public string _lblText
{
get { return label1.Text; }
set { label1.Text = value; }
}
public ctlBoundCheckButton()
{
InitializeComponent();
}
}
结果:
我创建了一个包含标签、复选框和按钮的复合用户控件。我已经在表单设计器中设置了某些属性。
public partial class ctlBoundCheckButton : UserControl
{
[Browsable(true)]
public string _chkText { get; set; }
public string _btnText { get; set; }
public string _lblText { get; set; }
public ctlBoundCheckButton()
{
InitializeComponent();
checkBox1.Text = _chkText; // _chkText is null :(
button1.Text = _btnText;
label1.Text = _lblText;
}
当我将此用户控件放到窗体上时,自定义属性在窗体设计器中显示良好,我可以为它们赋值:
但属性在 运行 时为空。正如您在控件的构造函数中看到的那样,值保持为空。在复合自定义控件中设置自定义属性的正确方法是什么?
按照其他人的建议,您可以尝试在get set方法中设置属性。
这是一个代码示例,您可以参考。
public partial class ctlBoundCheckButton : UserControl
{
[Browsable(true)]
public string _chkText
{
get { return checkBox1.Text; }
set { checkBox1.Text=value; }
}
public string _btnText
{
get { return button1.Text; }
set { button1.Text = value; }
}
public string _lblText
{
get { return label1.Text; }
set { label1.Text = value; }
}
public ctlBoundCheckButton()
{
InitializeComponent();
}
}
结果: