DataGridView是.net2.0的一个新增数据控件,功能比DataGrid增强了很多,但是并没有CellKeyPress事件来限制文本列的输入。
我通过EditingControlShowing事件解决这个问题.
同时也可实现取值操作

Code
#region 限制输入
private void TextBoxDec_KeyPress(object sender, KeyPressEventArgs e)
{
if ((Convert.ToInt32(e.KeyChar) == 8))
{
e.Handled = false;
}
else
{
Regex numRegex = new Regex(@"^(-?[0-9]*[.]?[0-9]*)$");
Match Result = numRegex.Match(Convert.ToString(((TextBox)sender).Text + e.KeyChar));
if (Result.Success)
{
e.Handled = false;
}
else
{
e.Handled = true;
}
}
TextBox tb = (TextBox)sender; //可通过此方法获取当前值 tb.text
}
#endregion
#region 编辑行事件
private void dgvItelList_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (this.dgvItelList.CurrentCell.ColumnIndex == 行索引)
{
e.Control.KeyPress += new KeyPressEventHandler(TextBoxDec_KeyPress);
}
if (this.dgvItelList.CurrentCell.ColumnIndex == 行索引)
{
e.Control.KeyPress += new KeyPressEventHandler(TextBoxDec_KeyPress);
}
}
#endregion
纯属个人的小经验,发在这里是希望以后遇到此类问题的兄弟快速解决问题