当前位置: 代码迷 >> C# >> 继承控件的执行顺序求教,该怎么处理
  详细解决方案

继承控件的执行顺序求教,该怎么处理

热度:15   发布时间:2016-05-05 03:30:21.0
继承控件的执行顺序求教
我新建了一个继承控件,继承自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"; }
            }
        }
  相关解决方案