DataGridView:如何同时允许逗号和点作为分隔符
DataGridView: How to allow comma and dot as a separators at the same time
我有一个绑定到 属性 的 DataGridViewTextBoxColumn。我想让用户输入数字,不管他用什么来分隔小数点。此外,我不需要空格或逗号来分隔 thousads。
很简单:
1.908 = 1.908
1,908 = 1.908
如果没有办法指定格式字符串,我可以在绑定之前替换(“,”,“。”)吗?或者其他方式?
谢谢。 (对不起我的英语)
DataGridView
已经根据当前用户的区域设置进行格式化,至少如果您将数据绑定到对象数据源并且 属性 是数字(即不是 string
).
您可以通过在 Windows 中打开 Region and Language
并在例如English (United States)
格式和 Swedish (Sweden)
。在前一种情况下,输入 2.718
将正确解析,而在第二种情况下 2,718
将正确解析。您必须 运行 无需在 VS 中调试才能加载新设置。
(我不建议尝试将逗号和点解析为同一个用户的小数点分隔符,如果你正在考虑这样做的话。这不是大多数用户的预期行为,如果用户应该碰巧也使用千位分隔符。)
Crete 另一个 属性 字符串类型,它将绑定到该列。
然后set/read原来的属性的值通过这个
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));
}
}
}
我有一个绑定到 属性 的 DataGridViewTextBoxColumn。我想让用户输入数字,不管他用什么来分隔小数点。此外,我不需要空格或逗号来分隔 thousads。
很简单:
1.908 = 1.908
1,908 = 1.908
如果没有办法指定格式字符串,我可以在绑定之前替换(“,”,“。”)吗?或者其他方式?
谢谢。 (对不起我的英语)
DataGridView
已经根据当前用户的区域设置进行格式化,至少如果您将数据绑定到对象数据源并且 属性 是数字(即不是 string
).
您可以通过在 Windows 中打开 Region and Language
并在例如English (United States)
格式和 Swedish (Sweden)
。在前一种情况下,输入 2.718
将正确解析,而在第二种情况下 2,718
将正确解析。您必须 运行 无需在 VS 中调试才能加载新设置。
(我不建议尝试将逗号和点解析为同一个用户的小数点分隔符,如果你正在考虑这样做的话。这不是大多数用户的预期行为,如果用户应该碰巧也使用千位分隔符。)
Crete 另一个 属性 字符串类型,它将绑定到该列。
然后set/read原来的属性的值通过这个
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));
}
}
}