我想做一个自定义控件,想在其中进行数据绑定:
DataBindings.Add(new Binding("text",DataSetName,"TableName.FieldName"));
但是设计时还没有数据源存在,就是上面这句话中的DataSetName.请高手指导一下.谢谢.

解决方案 »

  1.   

    是这样,生成DataSet及DataTable是在Form里的,数据绑定我想放在自定义控件里面.
    所以在做自定义控件时,是没有数据源的,只有将自定义控件拖到Form上才有对应的数据源.即上面讲到的DataSetName.
      

  2.   

    直接定义一个全局的dataset就好了
      

  3.   

    那你绑定到哪一列呢?
    如果确定绑定到哪一列的话,你可以先在控件上加一个bindingSource,
    然后DataBindings.Add(new   Binding("text",bindingSource,"列名")); 
    在将控件放到Form的时候,再设置bindingSource的Datasource和DataMember。这样是可以的
      

  4.   

    要绑定的列名我打算在MyTextBox中建一个属性.
    就是因为不想在做表单实例时一个个控件进行数据绑定,只想在设计时指定一个属性,运行时自动绑定啊.
    并且DataSet也是在表单运行时才通过代码生成的.
      

  5.   


    如果你的自定义控件,是继承现有控件的那种(不是.ascx那种).那么你可以在.cs文件中定义一个公有属性,用来接受你的字段名字,假如你的字段这样定义
    private string biddingColumnName;
    public string _BiddingColumnName
    {
        set
        {
            biddingColumnName = value;
        }
        get
        {
            //做一些判断,进而判定是否在调用之前给属性赋值
            //如果没有赋值,就throw new Exception("xxxx")抛出一个异常等等
        }
    }
    那么,你可以在绑定数据源的时候这样搞
    DataBindings.Add(new   Binding("text",DataSetName,_BiddingColumnName));