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

本文关键字:分隔符 句点 何允许 DataGridView | 更新日期: 2023-09-27 18:28:48

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

很简单:

1.908=1.908

1908=1.908

如果无法指定格式字符串,我可以在绑定前替换(",",".")吗?或者其他方式?

谢谢。(对不起我的英语)

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

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

DataGridView已经根据当前用户的区域设置进行了格式化,至少在数据绑定到对象数据源并且属性为数字(即不是string)的情况下是这样。

您可以通过在Windows中打开Region and Language并在例如English (United States)格式和Swedish (Sweden)格式之间切换来测试这一点。在前一种情况下,输入2.718将正确解析,而在第二种情况下2,718将正确解析。为了加载新的设置,您必须在VS中运行而不进行调试。

(如果你想这样做的话,我不建议尝试将逗号和句点解析为同一用户的十进制分隔符。这不是大多数用户的预期行为,如果用户碰巧也使用千位分隔符,这会导致错误。)