繁体   English   中英

vb.net-datagridview-格式不起作用

[英]vb.net - datagridview - Formatting is not working

情况

我有一列(col1)的datagridview。

在数据网格定义(设计视图)中,我创建了这一行,并将格式设置为C2(或C0或C-我尝试了所有方法)。

然后,我以编程方式加载我的datagrid视图:

dbl_myValue as double   
dbl_myValue = 6.99

datagridview1.item(0,0) = dbl_myValue

datagridView正确显示数据:6.99 $

当我在datagridview.item(0,0)上“间谍”时, “值”属性是Double。

问题 :

如果用户手动输入一个值,则不起作用 :单击该单元格,输入一个数值(例如100,不带小数,以避免复杂性),然后离开该单元格(因此不再处于编辑模式)。 格式只是不适用。

当我在datagridview.item(0,0)上“间谍”时, “值”属性为STRING。

所以我想这是问题所在,但是我该怎么办?

我试图进入CellValidating并用如下代码填充它:

Private Sub DataGridView1_CellValidating(....) 

Dim c As Control = DataGridView_WorkOrderAddition.EditingControl

c.text = formatNumeric(c.text) 

c.text = convert.toDouble(c.text)

但这仍然行不通。

是的,当未绑定DGV时,单元格默认为存储字符串。 设置列的CellType属性可以解决以下问题:Decimal最适合处理货币值。 您还需要实现DataError事件,以便可以警告用户该字符串无法转换。 从而:

Public Class Form1
    Public Sub New()
        InitializeComponent()
        DataGridView1.Columns(0).ValueType = GetType(Decimal)
    End Sub

    Private Sub DataGridView1_DataError(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError
        MessageBox.Show(e.Exception.Message)
    End Sub
End Class

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM