2016-01-04 105 views
0

我有一个绑定到属性的DataGridViewTextBoxColumn。我想让用户输入数字,无论他用什么来分隔小数。此外,我不需要空格或逗号分隔thousads。结合之前DataGridView:如何允许逗号和点作为分隔符同时

1.908 = 1.908

1908 = 1.908

如果没有办法指定格式字符串,我可以更换( “ ”“”):

很简单?或者其他方式?

谢谢。 (对不起,我的英文)

+0

欢迎堆栈溢出设定原产权/读值。你可以使用'Replace',但我不推荐这个。因为在这种情况下,用户_might_将千位分隔符放在'.'中,这对您使用的文化设置可能不明确。我建议在UI部分中添加一些验证,以便为小数提供_proper_格式。 –

回答

0

克里特字符串类型的另一个属性,它将绑定到该列。
然后通过这个

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

DataGridView已经根据当前用户的区域设置格式化,至少如果你的数据绑定到一个对象数据源并且属性是数字的(即不是string)。

您可以在Windows中打开Region and Language并在例如English (United States)格式和Swedish (Sweden)。在前一种情况下,输入2.718将在第二个2,718中正确解析。你将不得不在VS中进行调试才能加载新的设置。

(我不会建议试图解析逗号和点作为同一用户的小数点分隔符,如果你想这样做。这不是大多数用户的预期行为,并且如果用户应该恰好也使用千位分隔符。)

相关问题