dataGridView中单元格只能输入数字后要保使数字保留两位小数,怎么弄呀???

yinliangbp 2008-11-26 10:20:35
各位大哥,昨天我用这个实现了只输入数字,怎样加入让输入的数字保留两位小数呢??
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;
}
}
...全文
1810 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ColaCoding 2009-02-03
  • 打赏
  • 举报
回复
学习了。。。。。。
dahai99007 2008-11-26
  • 打赏
  • 举报
回复
我给你的那段代码不可以吗?
yinliangbp 2008-11-26
  • 打赏
  • 举报
回复
decimal val = decimal.Parse(e.FormattedValue.ToString(“0.00”));
这样是不行的。。错误提示

decimal val = decimal.Parse(e.FormattedValue.ToString());
val=Convert.ToDecimal(val.ToString("0.00"));
这样的话,val的值是有两位小数了,但没有返回给单元格。

帮帮忙呀。。。。
dahai99007 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Old_Mouse 的回复:]
设置DataGridViewCellStyle { Format=N2 }
[/Quote]
设置成这样是不是所有的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}$");
}
loucc 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 LoveInterMilan 的回复:]
5楼的正解
应该是tostring(“f2”)
[/Quote]Y
LoveInterMilan 2008-11-26
  • 打赏
  • 举报
回复
5楼的正解
应该是tostring(“f2”)
Old_Mouse 2008-11-26
  • 打赏
  • 举报
回复
设置DataGridViewCellStyle { Format=N2 }
yilanwuyu123 2008-11-26
  • 打赏
  • 举报
回复
tostring(“f2”)
ustbwuyi 2008-11-26
  • 打赏
  • 举报
回复

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;
}
}

ustbwuyi 2008-11-26
  • 打赏
  • 举报
回复
测试:


decimal number = 11.2561m;
Response.Write(number.ToString("0.00"));
ustbwuyi 2008-11-26
  • 打赏
  • 举报
回复

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;
}
}
长沙三毛 2008-11-26
  • 打赏
  • 举报
回复
1) 在 CellFormating 中处理,是显示还是保存?
2)参考拙文:定制DataGridView的数值编辑元素:Edit Control、Column与Cell

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧