VB.net DataGridView更改单元格.FormattedValue

VB.net DataGridView更改单元格.FormattedValue,vb.net,datagridview,Vb.net,Datagridview,如何更改用户双击单元格后以编辑模式显示的字符串/值(cell.FormattedValue) 即,值为“5”,格式化值为“5个”,这会导致验证错误。因此,我不想将用户看到的字符串从“5个”替换回“5个”。 然后,它的工作方式应该与用户simpy开始写入“5”并按Enter键时相同 这是不可能的,FormattedValue是只读的: Me.dgwNest1.Rows(e.RowIndex).Cells(e.ColumnIndex).FormattedValue = 5 Cell.Value不可

如何更改用户双击单元格后以编辑模式显示的字符串/值(cell.FormattedValue)

即,值为“5”,格式化值为“5个”,这会导致验证错误。因此,我不想将用户看到的字符串从“5个”替换回“5个”。 然后,它的工作方式应该与用户simpy开始写入“5”并按Enter键时相同

这是不可能的,FormattedValue是只读的:

Me.dgwNest1.Rows(e.RowIndex).Cells(e.ColumnIndex).FormattedValue = 5
Cell.Value不可用,因为它只更改已编辑字符串的值部分

问候,


Libor

只需调用引发DataGridView.CellFormatting事件的FormattedValueType属性,然后更改事件代码中的单元格样式

FormattedValue只是Value属性的格式化表示形式。FormattedValue表示形式由FormattedValueType属性指定

如果更改FormattedValueType属性,它将更改向用户显示的方式,而不更改值。=)

MSDN中的这些备注说明了如何编辑FormattedValue:

Value属性是单元格包含的实际数据对象, 而FormattedValue是此 对象ValueType和FormattedValueType属性对应于 这些值的数据类型分别为

获取此属性的值将调用GetFormattedValue方法 将单元格值转换为该类型的等效显示值的步骤 由FormattedValueType属性指示。这引起了争议 DataGridView.CellFormatting事件,您可以处理该事件以进行自定义 值转换

有关DataGridViewCell.FormattedValue属性,请参见MSDN上的备注

当触发CellFormatting事件时,您可以执行以下操作:

Private Sub dgvMyData_CellFormatting(sender As System.Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvMyData.CellFormatting
    Dim MyStyle As New System.Windows.Forms.DataGridViewCellStyle

    MyStyle.Format = "00 ct"
    'or to remove the formatting:
    MyStyle.Format = "00"

    e.CellStyle = MyStyle
End Sub

我有一个类似的问题,请检查此项谢谢您的建议,我测试了CellFormatting事件,但在从DB填充数据或将数据输入到单元格时会触发此事件。它与值/字符串没有任何关系,它在双击时以编辑模式显示。我要么不理解它,要么它对我不起作用。FormattedValueType也是只读的,因此在BeginEdit上关闭格式设置,在EndEdit上重新打开格式设置也不起作用。我想没有多少人用度量单位格式化列:-(,因为我在google上找不到关于这个主题的任何内容。我扩展了我的答案。你必须获得handle CellFormatting事件的值。我希望它有帮助!)