.net Winforms扩展控件属性
我正在扩展Winforms标签控件。(自定义标签)。定义如下:.net Winforms扩展控件属性,.net,winforms,.net-3.5,constructor,controls,.net,Winforms,.net 3.5,Constructor,Controls,我正在扩展Winforms标签控件。(自定义标签)。定义如下: public class CustomLabel: Label public CustomLabel():base() { } 我想更改标签的默认文本。总是CustomLabel1,CustomLabel2,等等 我在构造函数中尝试了base.Text=…和this.Text=…。还尝试: [DefaultValue(typeof(string), "MyDesiredText")] public ove
public class CustomLabel: Label
public CustomLabel():base()
{
}
我想更改标签的默认文本。总是CustomLabel1
,CustomLabel2
,等等我在构造函数中尝试了
base.Text=…
和this.Text=…
。还尝试:
[DefaultValue(typeof(string), "MyDesiredText")]
public override string Text
{
get
{
return base.Text;
}
set
{
base.Text = value;
}
}
但是没有运气。还有一件事:Autosize属性似乎没有按预期工作,并且提供的空间比第一次查看自定义标签控件所需的空间少了1个字符。例如,默认文本为:
CustomLabel1
,但我仅在将控件拖动到表单时看到CustomLabel
。如果我更改文本,Autosize属性将正确显示整个文本。真正的修复需要替换控件的设计器。这很难做到,System.Design.dll中的LabelDesigner类是内部的,因此您无法继承它。这是一种令人讨厌的方式:
using System;
using System.Windows.Forms;
class CustomLabel : Label {
public override string Text {
get { return base.Text; }
set {
if (this.DesignMode && value.StartsWith("customLabel")) {
value = DateTime.Now.ToString(); // whatever you want here
}
base.Text = value;
}
}
}
类CustomLabel:Label{public new string Text{get…set…}