自定义 UserControl - 设计时支持控件重绘
Custom UserControl - Design-Time support for control repainting
我已经创建了我的自定义 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
事件对调整大小做出反应。
我已经创建了我的自定义 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
事件对调整大小做出反应。