问题1. 比如属性tailText,我看到好多这么写:
[Bindable(true)]
[Browsable(true)]
[Description("设定结尾文字")]
[Category("Appearance")]
public string tailText
{
get { return pTailText; }
set
{
pTailText = value;
this.Invalid();
}
}
请问Bindable和Browsable都是什么意思?为什么当我在使用自定义控件的程序中的属性栏修改tailText属性时,控件上的tailText文字处不刷新?就像标准控件的label的text属性一样。
我是在控件的paint事件函数里这样写的:
private void aaPaint(object sender, PaintEventArgs e)
{
Graphics fmg = e.Graphics;
if (plotTailText.Length > 0)
fmg.DrawString(pTitleText, pTitleTextFont, new SolidBrush(Color.Black), (this.Size.Width - (int)tailTextSize.Width) / 2, this.Size.Height - (int)ttailTextSize.Height) / 2);
}问题2. 我的自定义控件上有几个标准控件摆放在一起构成,某些控件的位置和大小会根据另一些控件的属性的变化而变化,变化规则,也就是子控件的位置和大小重定义我是在自定义控件的load函数里写的,在使用自定义控件的程序里,当改变某一个子控件属性时,我发现控件的其他子控件位置大小就不能跟着调整,只有在运行程序时才会调整。请问我怎样才能实现这两个问题的要求?
[Bindable(true)]
[Browsable(true)]
[Description("设定结尾文字")]
[Category("Appearance")]
public string tailText
{
get { return pTailText; }
set
{
pTailText = value;
this.Invalid();
}
}
请问Bindable和Browsable都是什么意思?为什么当我在使用自定义控件的程序中的属性栏修改tailText属性时,控件上的tailText文字处不刷新?就像标准控件的label的text属性一样。
我是在控件的paint事件函数里这样写的:
private void aaPaint(object sender, PaintEventArgs e)
{
Graphics fmg = e.Graphics;
if (plotTailText.Length > 0)
fmg.DrawString(pTitleText, pTitleTextFont, new SolidBrush(Color.Black), (this.Size.Width - (int)tailTextSize.Width) / 2, this.Size.Height - (int)ttailTextSize.Height) / 2);
}问题2. 我的自定义控件上有几个标准控件摆放在一起构成,某些控件的位置和大小会根据另一些控件的属性的变化而变化,变化规则,也就是子控件的位置和大小重定义我是在自定义控件的load函数里写的,在使用自定义控件的程序里,当改变某一个子控件属性时,我发现控件的其他子控件位置大小就不能跟着调整,只有在运行程序时才会调整。请问我怎样才能实现这两个问题的要求?
{
get { return base.Text; }
set { base.Text = value; }
} protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);
this.Invalidate();
}
假如一个自定义控件上有一个panel1,设计时他的location是(5,5) size是(100,100),自定义控件有属性a,它是字符串,a的默认值是空的。
假如在自定义控件的使用程序中form1,给属性a赋值“abcdefg”,我想要的结果就是,在form1上自定义控件把属性字符串a写到原来panel1的位置上,然后自动调整子控件panel的位置和大小,也就是及时看到自定义控件的样子:例如,属性a的字符串写在自定义控件的(5,5)处,假设a的长度是20,而panel1的location要自动向右挪一块,为(25,5) size也要相应缩短比如(80,100)。当然,如果a没有赋值,自定义控件样子就维持设计时的原始样子。
然后再DrawString