自定义用户控件A,在其中放置了一个DataGridView,然后再新建一个自定义用户控件B,继承于A,
怎样在B中设置A中的DataGridView的DataSource属性,且只允许设置该属性.
谢谢.

解决方案 »

  1.   

    补充一下,公开的DataSounrce属性可以在设计时,通过属性对话框设置.
    也就是可以使用辅助的对话框选择项目中已存在的数据源。
      

  2.   

    private object dataSource;public object DataSource
    {
       get{return a.datasource;}
    }
      

  3.   

    选中基类的DataGridView,然后设置其访问属性为:Protected;在属性窗口中可能找到“Modifier"默认的为private
      

  4.   


    还需要在构造函数里加上public DataGridView
    {
    this.DataGridViewA.DataSource = dataSource;
    }
      

  5.   


    private object dataSource; public object DataSource 

      get
      {
         return DataGridViewA.datasource;
      } 
      set
      {
        DataGridViewA.dataSource = value;
      } 
    }这样更简单
      

  6.   

    不好意思,写错了,
    是public object DataSource 

      get
      {
         return DataGridViewA.DataSource;
      } 
      set
      {
        DataGridViewA.DataSource = value;
      } 
    }
      

  7.   

    谢谢大家的回复。在设计时以界面的方式设置winform的DataGridView的DataSource属性时,VS会打开一个对话框,
    在其中可以选择项目中已建立的DataSet的DataTable,如何在自定义控件中实现,
    我试验过将属性类型设置为DataSet,但有错误提示:类型“System.Windows.Forms.BindingSource”的对象无法转换为类型“System.Data.DataSet”。
      

  8.   

    我开始也是这样想的,但实际还是不能在设计器中访问,是不是VS的BUG啊。
      

  9.   


    class UserControl1 : UserControl
    {
       [AttributeProvider( typeof(System.ComponentModel.IListSource) )]       //<----
       public object DataSource
       {
           get {return this.dataGridView1.DataSource; }
           set {this.dataGridView1.DataSource = value; }
       }
    }解释见下贴:
    [VB2008 WinForm]自定义控件数据源属性问题