我新建了一个继承控件,继承自vs自带的button,在其中新建了一个属性(int flag),这个属性是用来控制标题如何显示的,逻辑很简单,当flag为1时,标题显示为“111”,flag为2时,标题显示为"222",,在控件的构造函数中写了上述逻辑,完整代码如下:
public partial class btnTest : btnBase
{
public int flag{ get; set; }
public btnTest()
{
InitializeComponent();
if (flag== 1)
{
this.Text = "111";
}
else { this.Text = "222"; }
}
}
编译控件后,把该控件放到一个FORM上,设置其flag属性为2,运行FORM,发现按钮的标题还是显示的是111,并不是想像中的222,查看了FORM ,发现对flag属性赋值2,是在FORM的InitializeComponent方法中完成的,在该方法中先创建了继承控件,然后将flag属性赋值为2,也就意味着控件创建时,flag属性永远都是1。如果我要实现上述业务逻辑,难道只能在FORM中去完成吗?
------解决思路----------------------
别放构造函数里
不是还有load和shown吗
------解决思路----------------------
在构造函数中的方法只会执行一次,后面再改flag的值就没效果了,楼主应该研究下面的属性用法
private int _flag = 1;
public int flag
{
get { return _flag; }
set
{
_flag = value;
if (_flag == 1) { this.Text = "111"; }
else { this.Text = "222"; }
}
}