//Handle column changing events on the Customers DataGrid table
   private void Customers_ColumnChanging(object sender, System.Data.DataColumnChangeEventArgs e) {   //Only check for errors in the Product column
   if (e.Column.ColumnName.Equals("Product")) {      //Do not allow "Automobile" as a product
      if (e.ProposedValue.Equals("Automobile")) {
         object badValue = e.ProposedValue;
         e.ProposedValue = "Bad Data";
         e.Row.RowError = "The Product column contains an error";
         e.Row.SetColumnError(e.Column, "Product cannot be " + badValue);
      }
   }
}

解决方案 »

  1.   

    上面有点小错误,是DataTable,不是DataGrid
    msdn:
    Windows 窗体 DataGrid 控件有两种可用的输入验证类型。如果用户试图输入一个值,而该值具有单元格不可接受的数据类型(例如,向需要整数的单元格中输入一个字符串),则新的无效值将替换为旧值。这种输入验证是自动完成的,不能进行自定义。另一种的输入验证可用于拒绝任何不可接受的数据,例如,在必须大于或等于 1 的字段中输入 0,或者一个不合适的字符串。这是在数据集中通过编写 DataTable.ColumnChanging 或 DataTable.RowChanging 事件的事件处理程序来完成的。以下示例使用 ColumnChanging 事件,因为“Product”列特别不允许不可接受的值。您可以使用 RowChanging 事件来检查“End Date”列的值是否晚于同一行中“Start Date”的值
      

  2.   

    在DATAGRID中该怎样实现啊????????
      

  3.   

    看看http://www.dotnetjunkies.com/tutorials.aspx?tutorialid=393
      

  4.   

    定义;
    private void TextBoxLeave(object sender, System.EventArgs e)
    {
    ...
    }和datagrid绑定时加:
    TxtCol.TextBox.Leave += new System.EventHandler(TextBoxLeave);