2016-01-04 144 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中進行調試才能加載新的設置。

(我不會建議試圖解析逗號和點作爲同一用戶的小數點分隔符,如果你想這樣做。這不是大多數用戶的預期行爲,並且如果用戶應該恰好也使用千位分隔符。)

相關問題