TextChanged这一事件并不是Grid控件的值发生改变时激发的事件要响应Grid控件的值发生改变事件,如下:dataSet1.Tables[0].ColumnChanged+= new System.Data.DataColumnChangeEventHandle(this.my_ColumChanged);private void my_ColumChanged
(object sender,System.Data.DataColumnChangeEventArgs  e)
{
//你的代码
}其中,dataSet1.Tables[0]是dataGrid的数据源

解决方案 »

  1.   

    to sheep2002:
      如用这种方法,必须把DataSet定义为类的字段,如果仅在方法模块中定义的DataSet应该怎么办?在DataGrid控件中改变数值,和数据源应该没什么关系才对,因为我没有把DataGrid与DataSet进行静态绑定.
      

  2.   

    1、你不把DataGrid与DataSet或dataTable进行邦定dataGrid怎么用啊?
      (若不设dataSoure也可用,请告知,谢谢!)2、在DataGrid控件中改变数值,dataset中同时也改变。3、你的意思是动态邦定到dataGrid?即使动态邦定也可以阿。4、另,这种方法不必把DataSet定义为类的字段,在方法模块中定义的DataSet一样。
    例如:
    Form_load()
    {
      dataSet dataSet1=new dataSet();
      dataGrid.dataSource=dataSet1.Tables[0];
      dataSet1.Tables[0].ColumnChanged+= new  
        System.Data.DataColumnChangeEventHandle(this.my_ColumChanged);
    }
    my_ColumChanged()
    {
    //你的代码
    }
    以上代码,只是大概意识,具体实现请你自己根据实际情况处理。
      

  3.   

    to sheep2002:
      确实是可以,谢谢你先!
      但是我不明白在系统底层是怎样实现的,因为一个模块级的对象应该在一旦运行完整个模块后就释放了才对,怎么会是这样的?结合上例来说:
      Form_load()
      {
    1    dataSet dataSet1=new dataSet();
    2    dataGrid.dataSource=dataSet1.Tables[0];
    3    dataSet1.Tables[0].ColumnChanged+= new  
    4    System.Data.DataColumnChangeEventHandler(this.my_ColumChanged);
      }
      my_ColumChanged(object sender, 
      System.Data.DataColumnChangeEventArgs e)
      {
    5
      }
      按道理来说,程序运行到4时,把一个方法通过代理传剃给事件,这没有错,但是一旦运行完“}”这个结束符后,dataSet1这个对象应该被清除了才对,怎么还会生效呢?难道是DataGrid这个控件一直关联到DataSet而使数据集并没有被释放?DataGrid上的数值应该是它自身的一个值才对,怎么与数据集挂钩了,还是请大家讨论讨论!
      

  4.   

    系统底层是怎样实现的我也讲不太清楚,但C#是自动存储管理,任何一个实列当任何代码都无法访问他时就可被回收这意味者,dataSet的实列被清除不一定在程序运行到4时,程序运行到4时,dataGrid依然要访问dataSet的实列,my_ColumChanged(object sender, 
      System.Data.DataColumnChangeEventArgs e)
      {
    5
      }
    依然要访问dataSet的实列 所以,
    dataSet的实列不被清除,直到dataGrid实列被清除以上内容仅为我个人想法,未经验证。大家讨论讨论!