c#中的dataGridView实现enter键自增的功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cdc8596/article/details/88392649

在编程的过程中为了让用户使用方便输入,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键实现自增,需要其他的功能的话,自行添加

猜你喜欢

转载自blog.csdn.net/cdc8596/article/details/88392649