首页 > 解决方案 > 如何让用户控件中的自定义设计器属性在运行时具有价值?

问题描述

我创建了一个复合用户控件,其中包含一个标签、一个复选框和一个按钮。我已经设置了要在表单设计器中设置的某些属性。

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;
    }

当我将此用户控件放到表单上时,自定义属性在表单设计器中显示得很好,我可以为它们分配值:

在此处输入图像描述

但是属性在运行时为空。正如您在控件的构造函数中看到的那样,这些值保持为空。在复合自定义控件中设置自定义属性的正确方法是什么?

标签: c#visual-studiowinformsuser-controls

解决方案


正如其他人建议的那样,您可以尝试在 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();
          

        }
    }

结果:

在此处输入图像描述


推荐阅读