各位大哥,昨天我用这个实现了只输入数字,怎样加入让输入的数字保留两位小数呢??
private void dataGridViewDebug_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
// dataGridViewDebug的7、8、9、10列只能输入数字跟小数点
if (e.ColumnIndex == 7 || e.ColumnIndex == 8 || e.ColumnIndex == 9 || e.ColumnIndex == 10)
{
try
{
// 如果输入的格式化数值是空值执行
if (String.IsNullOrEmpty(e.FormattedValue.ToString()))
{
MessageBox.Show("输入不能为空!");
// 通过事件名柄将输入操作取消
e.Cancel = true;
}
// 将单元格输入的格式化数值转换成高精度浮点型
else
{
decimal val = decimal.Parse(e.FormattedValue.ToString());
}
}
catch
{
MessageBox.Show("输入中有无效字符,只能输入数字!");
// 通过事件名柄将输入操作取消
e.Cancel = true;
}
}
private void dataGridViewDebug_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
// dataGridViewDebug的7、8、9、10列只能输入数字跟小数点
if (e.ColumnIndex == 7 || e.ColumnIndex == 8 || e.ColumnIndex == 9 || e.ColumnIndex == 10)
{
try
{
// 如果输入的格式化数值是空值执行
if (String.IsNullOrEmpty(e.FormattedValue.ToString()))
{
MessageBox.Show("输入不能为空!");
// 通过事件名柄将输入操作取消
e.Cancel = true;
}
// 将单元格输入的格式化数值转换成高精度浮点型
else
{
decimal val = decimal.Parse(e.FormattedValue.ToString());
}
}
catch
{
MessageBox.Show("输入中有无效字符,只能输入数字!");
// 通过事件名柄将输入操作取消
e.Cancel = true;
}
}
2)参考拙文:定制DataGridView的数值编辑元素:Edit Control、Column与Cell
private void dataGridViewDebug_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
// dataGridViewDebug的7、8、9、10列只能输入数字跟小数点
if (e.ColumnIndex == 7 || e.ColumnIndex == 8 || e.ColumnIndex == 9 || e.ColumnIndex == 10)
{
try
{
// 如果输入的格式化数值是空值执行
if (String.IsNullOrEmpty(e.FormattedValue.ToString()))
{
MessageBox.Show("输入不能为空!");
// 通过事件名柄将输入操作取消
e.Cancel = true;
}
// 将单元格输入的格式化数值转换成高精度浮点型
else
{
decimal val = decimal.Parse(e.FormattedValue.ToString("0.00"));
}
}
catch
{
MessageBox.Show("输入中有无效字符,只能输入数字!");
// 通过事件名柄将输入操作取消
e.Cancel = true;
}
}
decimal number = 11.2561m;
Response.Write(number.ToString("0.00"));
private void dataGridViewDebug_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
// dataGridViewDebug的7、8、9、10列只能输入数字跟小数点
if (e.ColumnIndex == 7 || e.ColumnIndex == 8 || e.ColumnIndex == 9 || e.ColumnIndex == 10)
{
try
{
// 如果输入的格式化数值是空值执行
if (String.IsNullOrEmpty(e.FormattedValue.ToString()))
{
MessageBox.Show("输入不能为空!");
// 通过事件名柄将输入操作取消
e.Cancel = true;
}
// 将单元格输入的格式化数值转换成高精度浮点型
else
{
decimal val = decimal.Parse(e.FormattedValue.ToString());
val=Convert.ToDecimal(val.ToString("0.00"));
}
}
catch
{
MessageBox.Show("输入中有无效字符,只能输入数字!");
// 通过事件名柄将输入操作取消
e.Cancel = true;
}
}
应该是tostring(“f2”)
可以用正则表达式验证下吗。
参考下:
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
decimal dcm = 0;
if (VlidateData(e.FormattedValue.ToString()))
{
dcm = decimal.Parse(e.FormattedValue.ToString());
}
else
{
MessageBox.Show("输入无效!");
e.Cancel = true;
}
}
private static bool VlidateData(string data)
{
return System.Text.RegularExpressions.Regex.IsMatch(data, @"^[0-9]+[.]{1}([0-9]{2}){1}$");
}
这样是不行的。。错误提示 decimal val = decimal.Parse(e.FormattedValue.ToString());
val=Convert.ToDecimal(val.ToString("0.00"));
这样的话,val的值是有两位小数了,但没有返回给单元格。帮帮忙呀。