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));
        }
    }
}