我有一个绑定到属性的DataGridViewTextBoxColumn。我想让用户输入数字,无论他用什么来分隔小数。此外,我不需要空格或逗号分隔thousads。结合之前DataGridView:如何允许逗号和点作为分隔符同时
1.908 = 1.908
1908 = 1.908
如果没有办法指定格式字符串,我可以更换( “ ”“”):
很简单?或者其他方式?
谢谢。 (对不起,我的英文)
我有一个绑定到属性的DataGridViewTextBoxColumn。我想让用户输入数字,无论他用什么来分隔小数。此外,我不需要空格或逗号分隔thousads。结合之前DataGridView:如何允许逗号和点作为分隔符同时
1.908 = 1.908
1908 = 1.908
如果没有办法指定格式字符串,我可以更换( “ ”“”):
很简单?或者其他方式?
谢谢。 (对不起,我的英文)
克里特字符串类型的另一个属性,它将绑定到该列。
然后通过这个
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));
}
}
}
DataGridView
已经根据当前用户的区域设置格式化,至少如果你的数据绑定到一个对象数据源并且属性是数字的(即不是string
)。
您可以在Windows中打开Region and Language
并在例如English (United States)
格式和Swedish (Sweden)
。在前一种情况下,输入2.718
将在第二个2,718
中正确解析。你将不得不在VS中进行调试才能加载新的设置。
(我不会建议试图解析逗号和点作为同一用户的小数点分隔符,如果你想这样做。这不是大多数用户的预期行为,并且如果用户应该恰好也使用千位分隔符。)
欢迎堆栈溢出设定原产权/读值。你可以使用'Replace',但我不推荐这个。因为在这种情况下,用户_might_将千位分隔符放在'.'中,这对您使用的文化设置可能不明确。我建议在UI部分中添加一些验证,以便为小数提供_proper_格式。 –