为避免在DataGridView的单元格中输入错误的数据类型导致保存错误,可以用下面代码解决:
1、先设置DataGridView只能输入数字的列的外观属性:(见图1)
DefaultCellStyle为:DataGridViewCellStyle { NullValue=0, Format=N2}
其中,NullValue=0表示此单元格为空时的默认值为0,Format=N2则代表格式化
图1
2、然后编写DataGridView的EditingControlShowing事件:
TextBox control; //定义输入框控件对象
private void dataGridView1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
//只对TextBox类型的单元格进行验证
if (e.Control.GetType().BaseType.Name == "TextBox")
{
control = new TextBox();
control = (TextBox)e.Control;
if (control.Text == "0") //需要限制输入数字的单元格
{
control.KeyPress += new KeyPressEventHandler(control_KeyPress);
}
else
{
//非数字类型单元格
control.Leave += new EventHandler(control_Leave);
}
}
}
void control_KeyPress(object sender, KeyPressEventArgs e)
{
//限制只能输入-9的数字,退格键,小数点和回车
if (((int)e.KeyChar >= 48 && (int)e.KeyChar <= 57) || e.KeyChar == 13 || e.KeyChar == 8 || e.KeyChar == 46)
{
e.Handled = false;
}
else
{
e.Handled = true;
MessageBox.Show("只能输入数字!");
}
}
void control_Leave(object sender, EventArgs e)
{
//如果需要限制字符串输入长度
if (control.Text.Length != 11)
{
MessageBox.Show("只能为位!");
control.Focus();
}
}
原文地址:http://blog.csdn.net/i3039/article/details/5131522