自定义用户控件-设计时支持控件重新绘制

本文关键字:控件 新绘制 绘制 用户 自定义 支持 | 更新日期: 2023-09-27 18:07:50

我已经创建了带有一些自定义属性的自定义UserControl。例如:

[Description("Example Description"),Category("CustomSettings"),DefaultValue("Transmedicom")]
public string DatabaseAddress
{
    get; set;
}

一切都很好。我可以在代码和design-time中更改custom property

我现在要找的(但找不到任何东西(是:当我的自定义属性在设计时发生更改时,我如何在设计时重新绘制(重新创建(我的UserControl

假设DatabaseName将更改为localhost时,UserControl将在我的UserControl上添加并显示一些标签。在Design-Time工作很重要。

自定义用户控件-设计时支持控件重新绘制

没有什么特别的。您只需要在属性setter中将文本设置为Label即可。这应该会更新UI。

private string databaseAddress;
[Description("Example Description"), Category("CustomSettings"), DefaultValue("Transmedicom")]
public string DatabaseAddress
{
    get { return databaseAddress; }
    set 
    { 
        databaseAddress = value;
        yourLabel.Text = value;//Set value to Label or whatever
    }
}

试试这个

private string _databaseAddress = "localHost";
[Description("Example Description"), Category("CustomSettings"), DefaultValue("Transmedicom")]
public string DatabaseAddress
{
    get
    {
        return _databaseAddress;
    } 
    set 
    {
        if(!string.IsNullOrEmpty(value))
        {
            _databaseAddress = value;
            lblAddress.Text = value;
            lblAddress.Invalidate();
        }
    }
}

前面的两个答案都是正确的
我只想补充一点,用户控件甚至可以在设计时使用Layout事件对调整大小做出反应。