DataGridView:如何同时允许逗号和点作为分隔符

时间:2016-01-04 08:51:11

标签: c# winforms datagridview binding formatting

我有一个绑定到属性的DataGridViewTextBoxColumn。我想允许用户输入数字,无论他使用什么来分隔小数。此外,我不需要空格或逗号来分隔thousads。

很简单:

1.908 = 1.908

1,908 = 1.908

如果无法指定格式字符串,可以在绑定之前替换(“,”,“。”)吗?或者其他任何方式?

谢谢。 (抱歉我的英文)

2 个答案:

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