编写了一个含textBox的自定义控件,定义了一个PJCT_Name的属性用来取出textBox的值,并用于外界的访问
代码如下:
private string project_name;        /// <summary>
        /// 添加属性PJCT_Name
        /// </summary>
        public string PJCT_Name
        {
            get { return project_name; }
            set { project_name = value;
                value = PJCT_NAME.Text; }
        }
在此自定义控件的按钮事件中调试查看PJCT_Name的值为空
        private void search_Click(object sender, EventArgs e)
        {
            string aa = this.PJCT_Name;
            MessageBox.Show(aa);
        }
感觉自定义属性的set{}有问题,但不知如何改,
请高手帮忙

解决方案 »

  1.   


    在此之前,你并未对 this.PJCT_Name 属性赋值,直接取值当然为空另外,在属性中对 value 赋值是没有意义的
      

  2.   

    你并未对 this.PJCT_Name 属性赋值,你可以设置一个默认值
      

  3.   

    一种写法是:        public string PJCT_Name 
            { 
                get {EnsureChildControls(); return PJCT_NAME.Text; } 
                set {EnsureChildControls();PJCT_NAME.Text=value; } 
            } 另外一种是保留project_name变量,但是在set中并不设置给PJCT_NAME.Text,而是在控件的PreRender过程中才将
      PJCT_NAME.Text=project_name; 
    这种方法中无需执行EnsureChildControls()。
      

  4.   

    set { project_name = value; 
                    value = PJCT_NAME.Text; }
    这样也行?