您的位置:首页 > 其它

对于KEYPRESS里的正则输入,格式要求为*.xx 保留2位小数

2014-10-16 11:11 330 查看
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}\d{0,1})$";

else

cc = @"^\d+(\.{0,1}\d{0,2})$";

}

else //万一number没有小数点,置零

cc = @"^\d+(\.{0,1}\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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐