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;
}
}
12 个解决方案
#2
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;
}
}
#3
测试:
decimal number = 11.2561m;
Response.Write(number.ToString("0.00"));
#4
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;
}
}
#5
tostring(“f2”)
#6
设置DataGridViewCellStyle { Format=N2 }
#7
5楼的正解
应该是tostring(“f2”)
应该是tostring(“f2”)
#8
Y
#9
设置成这样是不是所有的cell输入都是这样了?
可以用正则表达式验证下吗。
参考下:
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}$");
}
#10
decimal val = decimal.Parse(e.FormattedValue.ToString(“0.00”));
这样是不行的。。错误提示
decimal val = decimal.Parse(e.FormattedValue.ToString());
val=Convert.ToDecimal(val.ToString("0.00"));
这样的话,val的值是有两位小数了,但没有返回给单元格。
帮帮忙呀。。。。
这样是不行的。。错误提示
decimal val = decimal.Parse(e.FormattedValue.ToString());
val=Convert.ToDecimal(val.ToString("0.00"));
这样的话,val的值是有两位小数了,但没有返回给单元格。
帮帮忙呀。。。。
#11
我给你的那段代码不可以吗?
#12
学习了。。。。。。
#1
1) 在 CellFormating 中处理,是显示还是保存?
2)参考拙文: 定制DataGridView的数值编辑元素:Edit Control、Column与Cell
2)参考拙文: 定制DataGridView的数值编辑元素:Edit Control、Column与Cell
#2
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;
}
}
#3
测试:
decimal number = 11.2561m;
Response.Write(number.ToString("0.00"));
#4
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;
}
}
#5
tostring(“f2”)
#6
设置DataGridViewCellStyle { Format=N2 }
#7
5楼的正解
应该是tostring(“f2”)
应该是tostring(“f2”)
#8
Y
#9
设置成这样是不是所有的cell输入都是这样了?
可以用正则表达式验证下吗。
参考下:
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}$");
}
#10
decimal val = decimal.Parse(e.FormattedValue.ToString(“0.00”));
这样是不行的。。错误提示
decimal val = decimal.Parse(e.FormattedValue.ToString());
val=Convert.ToDecimal(val.ToString("0.00"));
这样的话,val的值是有两位小数了,但没有返回给单元格。
帮帮忙呀。。。。
这样是不行的。。错误提示
decimal val = decimal.Parse(e.FormattedValue.ToString());
val=Convert.ToDecimal(val.ToString("0.00"));
这样的话,val的值是有两位小数了,但没有返回给单元格。
帮帮忙呀。。。。
#11
我给你的那段代码不可以吗?
#12
学习了。。。。。。