如提。
   我下面的程序怎么改进???不要被注释掉的二行,约束起作用,但达不到要求。
要那二行,单元格输入“a“,程序不能正确提示:"____数据格式错误".
现在只能通过其他方式如按钮事件调用TextBoxModify(),但这样一来太不理想,
大家有更好的办法吗?
   .....
DataGridTextBoxColumn aColumnTextColumn2=new DataGridTextBoxColumn();
aColumnTextColumn2.HeaderText = dt.Columns[1].ColumnName;
aColumnTextColumn2.MappingName = dt.Columns[1].ColumnName;
aColumnTextColumn2.HeaderText="厚度(mm)";
         aColumnTextColumn2.TextBox.LostFocus += new EventHandler(TextBoxLostFocus);
aColumnTextColumn2.TextBox.TextChanged += new EventHandler(TextBoxChange);
.....
dataGrid1.TableStyles.Add(ts);
.....
private void TextBoxChange(object sender, EventArgs e)
{
string s1=((TextBox)sender).Text.ToString().Trim();
if (Regex.IsMatch(s1,@"^[\d]{0,8}$"))
{
}
else
{
MessageBox.Show(s1+"____数据格式错误");
                ((TextBox)sender).Text="";
((TextBox)sender).Focus();
}
} private void TextBoxLostFocus(object sender, EventArgs e)
{
if(((TextBox)sender).Text=="")
{
MessageBox.Show("请输入数据");
((TextBox)sender).Focus();
return;
}
// dt.DataSet.AcceptChanges();
// TextBoxModify();
} private void TextBoxModify()
{
dt.DataSet.AcceptChanges();
int i;
for(i=0;i<dt.Rows.Count;i++)
{
dt.Rows[i][3]=Convert.ToDecimal(dt.Rows[i][1].ToString())*Convert.ToDecimal(dt.Rows[i][2].ToString())/1000;
}
}

解决方案 »

  1.   

    你可以继承DataGridTextBoxColumn来实现一个自己的,然后在其中捕获keypress事件进行判断。
    参看
    http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx#q755q
      

  2.   

    对DataGridTextBoxColumn.textBox成员进行控制!
      

  3.   

    public class DataGridTextBoxColumnSub : DataGridTextBoxColumn
    {
    this.textBox.Text = ???控制这个
    }
      

  4.   

    Knight94:
       哪上面的类在我程序里怎么用呀,谢谢指教。
      

  5.   

    用它来替换原先的DataGridTextBoxColumn来定义column。
      

  6.   

    DataGridTextBoxColumn aColumnTextColumn1=new DataGridDigitsTextBoxColumn();
    报错:
    重载“DataGridDigitsTextBoxColumn”方法未取0参数。
    这3个参数如何定义??
    谢谢。