转自http://www.cnblogs.com/UouHt/archive/2009/02/16/1391687.html
DataGridView是.net2.0的一个新增数据控件,功能比DataGrid增强了很多,但是并没有CellKeyPress事件来限制文本列的输入。
我通过EditingControlShowing事件解决这个问题.
private void InputInteger(object sender, KeyPressEventArgs e)
{ //限制数量只能输入整数
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 22 && e.KeyChar != 3 && e.KeyChar != 24 && e.KeyChar != 26)
{
e.Handled = true;
}
else
{
//如果第一位输入0,则不接收
if (e.KeyChar == 48 && (((TextBox)sender).SelectionStart == 0))
e.Handled = true;
//如果是回车键,则按tab序进行跳转
if (e.KeyChar == 13)
{
SendKeys.Send("{TAB}");
e.Handled = true;
}
}
}
#region 编辑某列的值事件
private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (this.dgv.CurrentCell.ColumnIndex==5)//如果是第五列,只允许输入整数
{
e.Control.KeyPress += new KeyPressEventHandler(InputInteger);
}
}
#endregion