我有一个绑定到属性的DataGridViewTextBoxColumn。我想允许用户输入数字,无论他使用什么来分隔小数。此外,我不需要空格或逗号来分隔thousads。
很简单:
1.908 = 1.908
1,908 = 1.908
如果无法指定格式字符串,可以在绑定之前替换(“,”,“。”)吗?或者其他任何方式?
谢谢。 (抱歉我的英文)
答案 0 :(得分:0)
string
已根据当前用户的区域设置进行格式化,至少如果数据绑定到对象数据源且属性为数字(即不是Region and Language
)。
您可以通过在Windows中打开English (United States)
并在例如Swedish (Sweden)
格式和2.718
。在前一种情况下,输入2,718
将在第二个{{1}}中正确解析。您必须在VS中运行而不进行调试才能加载新设置。
(我不建议尝试将逗号和点解析为同一用户的小数分隔符,如果您正在考虑这样做。这不是大多数用户的预期行为,如果用户会导致错误也应该使用千分隔符。)
答案 1 :(得分:0)
Crete另一个String类型的属性,它将被绑定到该列 然后通过此
设置/读取原始属性的值public class YourBindableItem
{
public decimal OriginalValue { get; set; }
public decimal ParsedValue
{
get { return this.OriginalValue.ToString(); }
set
{
string forParse =
value.Replace(",", Globalization.CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator);
decimal temp = 0;
if(decimal.TryParse(forParse,
out temp,
Globalization.CultureInfo.InvariantCulture) == true)
{
this.OriginalValue = temp;
}
//if value wasn't parsed succesfully, original value will be returned
this.RaiseOnPropertyChanged(nameOf(this.ParsedValue));
}
}
}