我正在扩展Winforms Label控件。 (CustomLabel)。这是定义:
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属性将正确显示整个文本。
答案 0 :(得分:2)
真正的修复需要替换控件的设计器。这很难做到,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;
}
}
}