double.Parse不能处理DataGridView Cell Value

时间:2015-06-25 21:33:03

标签: c# datagridview

我有 class InjectionPoint{ @Autowred private Consumer [] consumerList; } 我希望根据单元格值应用格式更改。我想使用原始的DataGridView来源进行此操作,但不幸的是构建源需要删除和重定向某些行,以便索引关闭。因此,我尝试使用

进行操作
DataTable
然而,它从未将该值视为双重值。我已经使用MessageBox验证了输出,并且没有可能通过添加" - "而导致问题的前导或尾随空格。到MessageBox字符串的两侧。对于为什么它总是将值视为不是双倍的,即使对于明显可解析为双精度值的值,我也一无所知。

编辑:我不确定周末发生了什么变化,但是我进来了,修复了一个与此无关的不同错误,现在大胆正在使用.Value而不是.FormattedValue,如下面的gh0st所示。

1 个答案:

答案 0 :(得分:0)

double.TryParse()将以文化相关的方式解析字符串。您当前的文化很可能希望小数点是其他符号,例如逗号或其他符号。

例如,在我的机器上,我可以强制它通过传递不同的文化来解析,例如:

double.TryParse("1.2", 
                NumberStyles.Float | NumberStyles.AllowThousands, 
                CultureInfo.GetCultureInfo("fr-FR"), 
                out dbl); // returns false

如果您正在发生这种情况,那么您要么找到改变当前文化的方法,要么可以通过这种方式进行解析,以确保结果一致:

double.TryParse("1.2", 
                NumberStyles.Float | NumberStyles.AllowThousands, 
                CultureInfo.InvariantCulture,
                out dbl); // returns true

(*)注意:可以根据需要调整NumberStyles.Float | NumberStyles.AllowThousands值。我只是在这个例子中将它设置为,因为这是TryParse方法在使用带有较少参数的重载时使用的默认值。