public partial class editdata : UserControl
    {
        public editdata()
        {
            InitializeComponent();
        }        public string tablename
        {
            get
            {
                return tablename ;
            }
            set
            {
                tablename = value; 
            }
        }        public void editdata_Load(object sender, EventArgs e)
        {
            try
            {
                string sql = "select * from " + tablename;
                DBOperate.BindDataGridView(this.dataGridView1,sql);
            }
            catch
            {
            }
        }

解决方案 »

  1.   

       public partial class editdata : UserControl
        {
            public editdata()
            {
                InitializeComponent();
            }
            private string _tablename;
            public string tablename
            {
                get
                {
                    return _tablename;
                }
                set
                {
                    _tablename = value;
                }
            }        private void editdata_Load(object sender, EventArgs e)
            {
                string sql = "select * from " + _tablename;
                
            }    }
      

  2.   

     调用 editdata d = new editdata();
                d.tablename = "Tb";
                this.Controls.Add(d);
      

  3.   

      public string tablename
      {
      get
      {
      return tablename ;
      }
      set
      {
      tablename = value;  
      }
      }这样写是死循环
      

  4.   

      private string _tablename;
      public string tablename
      {
      get
      {
      return _tablename;
      }
      set
      {
      _tablename = value;
      }
      }
      

  5.   

     public string tablename
      {
      get
      {
      return tablename ;
      }
      set
      {
      tablename = value;  
      }
      }
    这个太经典了   是微软的bug么 
    为什么这样 ?
      

  6.   

    楼上说得对,属性名称不能跟内部变量名一样tablename