如何让用户控件中的自定义设计器属性在 运行 时具有价值?

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();
          

        }
    }

结果: