如何使用vb.net在datagridview中将数字格式化为3位小数

7

我有一个使用DataGridView的VB.NET Windows窗体应用程序。我希望找到一种简单的方法来将某些DataGridView单元格的数字格式化为三位小数。到目前为止,这是我所做的,但它似乎不能正确地格式化所有内容。

DataGridView1.Columns(3).DefaultCellStyle.Format = "#.###" 

“it doesn't seem to format everything correctly."的意思是什么?它没有正确地格式化什么? - rory.ap
如果我使用这个来整体格式化整个DataGridView,它似乎可以正常工作。然而,我的其中一个列索引似乎有问题,它无法正确地进行格式化。这意味着它仍然有超过千分位的小数。 - stackexchange12
代码是正确的。一个简单的错误可能是将字符串放入单元格中,而不是Double或Decimal类型的值。 - Hans Passant
我曾经遇到过类似的问题,根本原因是在我设置格式后忘记了一个例程会改变它。所以如果这个方法不起作用,检查你的代码是否有进一步调用来更改格式。它适用于填充数据网格视图。 - Rob
5个回答

21

这里描述了格式化字符串: https://msdn.microsoft.com/zh-cn/library/dwhawy9k(v=vs.110).aspx - Mattia72

0
尝试一下。
DataGridView1.Sort(DataGridView1.Columns(2), System.ComponentModel.ListSortDirection.Ascending)

或者

DataGridView1.Sort(DataGridView1.Columns(2), System.ComponentModel.ListSortDirection.Descending)

0

只需替换:

DataGridView1.Columns(3).DefaultCellStyle.Format = "#.###"

作者:

DataGridView1.Columns(3).DefaultCellStyle.Format = "N3"

"N3" 表示带有三位小数的数字数据。如果所有列都要使用 "N3",您可以一次性完成:

DataGridView1.DefaultCellStyle.Format = "N3"

你也可以应用一般的单元格对齐方式到数据网格中的所有单元格,例如:

DataGridView1.DefaulCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

最后,您还可以在“DataGridView属性”窗口中使用“DataGridViewCellStyle”框下的“格式”选项定义全局(所有列)数值格式。
而且,正如您所看到的,由于样式定义并不具体,因此这里不需要循环。

0

我也遇到了同样的问题,但我的代码是:

for R = 0 to DataGridView1.rows.count-1
DataGridView1.rows(r).cells(3).value=math.round(DataGridView1.rows(r).cells(3).value,2)
Next

R 是 DataGridView1 的当前行,3 是你的列。 我曾经将 DataGridView 单元格四舍五入到“2”个小数位,现在问题已经解决了 :)

希望能对你有所帮助 :)


0
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Me.DataGridView1.Columns.Add("TEST", "TEST")
    DataGridView1.Columns("TEST").DefaultCellStyle.Format = "N2"
    DataGridView1.Columns("TEST").ValueType = GetType(Decimal)
End Sub

1
请解释你的答案。在SO上,仅有代码的答案是不被鼓励的。谢谢。 - Gennadii Saprykin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接