在编程的过程中为了让用户使用方便输入,dataGridView的自由编辑是很必要的,用户如果想直接输入一个数字后,一直按enter键,其余的自动生成,需要这样做,如下:
dataGridView是默认不支持:keypress事件的,所以需要重写一下dataGridView
代码:
public sealed class dgv_cell:DataGridView
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Enter)
{
this.OnKeyPress(new KeyPressEventArgs('r'));
return true;
}
else
{
return base.ProcessCmdKey(ref msg, keyData);
}
}
}
然后在组件中,将这个组件拖到窗体中代替dataGridView控件,这样就可以激活dataGridView的keyPress事件了
判断部分的关键代码如下:
if (e.KeyChar == 'r')
{
string temp_num_str = dgv.Rows[row].Cells[col].Value.ToString();
switch (DataFormatSet.IsInteger(dgv.Rows[row].Cells[col].Value.ToString()))//使用正则表达式来判断是否格式正确
{
case true:
string temp_num_str = dgv_SampleBatch_Infor.Rows[row].Cells[col].Value.ToString();
dgv.Rows[row + 1].Cells[col].Value = Convert.ToUInt32(temp_num_str) + 1;
dgv.CurrentCell= dgv_SampleBatch_Infor[col, row + 1];
break;
case false:
MessageBox.Show("单元格内的字符串的格式不正确");
break;
}
}
public static bool IsInteger(string s)
{
string pattern = @"^\d*$";
return Regex.IsMatch(s, pattern);
}
基本的实现就是这样可以使用户按住enter键实现自增,需要其他的功能的话,自行添加