private void Cells_KeyPress(object sender,KeyPressEventArgs e) //自定义事件 { if (this.dataGridView1.CurrentCellAddress.X == 2) { string aa = @"^\d+$"; string bb = @"^\.{0,1}$"; Regex reg1 = new Regex(aa); Regex reg2 = new Regex(bb); if (!reg1.IsMatch(e.KeyChar.ToString()) && !reg2.IsMatch(e.KeyChar.ToString())) e.Handled = true; string cc = @"^\d+(\.{0,1}\d{0,1})$";//@"^(-?\d+)(\.\d+)?$"; char[] point={'.'}; string[] seperated=CellEdit.Text.Split(point); if(seperated.Length>1) //取小数点后字符串 { if (seperated[1].Length >= 2 //.22,小数点后的数字长度超过2 //&& (e.KeyChar >= '0' && e.KeyChar <= '9')//同时又在点后输入数字 && CellEdit.SelectionLength <= 0 //没有选中当前所输入的数字 && CellEdit.SelectionStart>=CellEdit.Text.Length-1//光标不在最后 ) cc = @"^\d+(\.{0,1})$"; else cc = @"^\d+(\.{0,2})$"; } else //万一number没有小数点,置零 cc = @"^\d+(\.{0,1})$"; Regex reg3 = new Regex(cc); // Regex reg = new Regex("^\\d*\\.{0,1}\\d{0,2}$");//Regex("^[0-9]{1}([0-9]|[.])$");"^" if ((!reg3.IsMatch(CellEdit.Text) && CellEdit.Text != "0")|| (e.KeyChar == '.' && CellEdit.Text.Contains('.'))) e.Handled = true;// if (!(e.KeyChar >= '0' && e.KeyChar <= '9') if (e.KeyChar == '\b') e.Handled = false; } }
原文链接:https://www.f2er.com/regex/361192.html