在项目中自定义了一个DataGird,提供给需要用的Form窗体使用,并提供了一个给外部控件使用的DataBinding方法,
I/F如下:
public void ExternalControlBinding(System.Windows.Forms.Control control, string propertyName, string colnumName)
内部代码如下:
((TextBox)control).DataBindings.Add(propertyName(DataTable)this.dataGrid.DataSource, colnumName);外部控件预想为TextBox希望达到的效果是点击DataGird上某一行的时候,在这个外部的控件上表示点击行指定列的数据。
也就是和控件的DataBinding方法一样。现在的问题是,用此法绑定上数据后,不论点击DataGrid的任何一行,这个外部的控件一直都显示DataGrid第一行指定列的数据。
有什么方法能解决吗?

解决方案 »

  1.   

    搂主定义一个事件委托,然后TextBox 所在类实现这个事件就行了
      

  2.   

    你两个控件绑定同一个bindingsource不就好了?
    系统会自动联动的
      

  3.   

    如:dataGridView.DataSource = this.bindingSource;
    TB_Re.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bindingSource, "Re", true));你只需给bindingSource设置数据源,
    你点击dataGridView的列后,文本框会同步的
      

  4.   

    wangping_li 所说确实可以,但是我的DataGrid是自定义用户控件。用此法绑定上数据后不论点击DataGrid的哪一行,这个TextBox只显示第一行绑定列的内容。这个是最奇怪的,其实是绑定上了,但是却一直显示第一行绑定列的内容。
      

  5.   


    public void ExternalControlBinding(System.Windows.Forms.Control control, string propertyName, string colnumName) 
    内部代码如下: 
    ((TextBox)control).DataBindings.Add(propertyName(DataTable)this.dataGrid.DataSource, colnumName); 
      

  6.   

    wangping_li 所说确实可以,其实我也是这样做的
    ((TextBox)control).DataBindings.Add(propertyName(DataTable)this.dataGrid.DataSource, colnumName); 只是这个绑定是在自定义用户控件里完成的,
    现在最奇怪的问题是不论点击DataGrid的哪一行,TextBox里一直都显示第一行绑定列的内容。
      

  7.   

    fy_ztsm 的代码不太明白为什么在](TextBox)control外套了一层color?