使用双强制到 2 个小数位填充 DataGridView 列,并进行排序

Populate DataGridView Column With a Double forcing to 2 Decimal Places, with Sort

抱歉这个奇怪的标题,但我不知道如何更好地表达它。

我正在尝试使用具有 2 个小数位的数字填充 DataGridView 上的列。

为此,我使用

Dim _Size as Double = 1.2345
DataGridView1.Item(0, 0).Value = Format(_Size, "0.00")

这会正确填充数据,但按此列排序时,会将项目视为字符串。

我在网上发现,如果您将输入的数据转换为数字类型(双精度、整数等),它将像数字而不是字符串一样对其进行排序。 这非常有效,但是任何具有 2 位小数的整数(即 1.00)都会更改为 0 位小数。

所以,如果我有以下值

1.2345
2.2345
3.2345
4.2345
5.0011

然后我将其格式化为小数点后两位,然后它们将变成

1.23
2.23
3.23
4.23
5.00

如果我随后将它们转换回双打,它们就会变成

1.23
2.23
3.23
4.23
5

是否有任何方法可以使用这些格式为 2 位小数但保留双精度类型的值来填充 DataGridView,以便列正确排序?

希望我已经解释清楚了。

如有任何帮助,我们将不胜感激

您正在使用遗留 VB 格式函数将您的值转换 为字符串:

Function Format(Expression As Object, Optional Style As String = "") As String

转换时,其他小数点丢失。使用该列的 DefaultCellStyleFormat 属性 指定所需的小数位数(N2 表示 2 位小数)。与 VB 的 Format 不同,它的行为类似于 "DisplayAs",无需更改值或更改类型。

  • 在“属性”窗格中,select Columns 启动列编辑器
  • 选择列
  • 单击 DefaultCellStyle 属性
  • 对于 Format,单击 ... 按钮从列表中选择 select。 Numeric2 Decimals 结果是 N2

如果您在该列中存储数值,将仅显示 2 位小数,但 actual/original 值仍然可用,排序将使用数值而不是文本排序。