我有一個綁定到屬性的DataGridViewTextBoxColumn。我想讓用戶輸入數字,無論他用什麼來分隔小數。此外,我不需要空格或逗號分隔thousads。結合之前DataGridView:如何允許逗號和點作爲分隔符同時
1.908 = 1.908
1908 = 1.908
如果沒有辦法指定格式字符串,我可以更換( 「 」「」):
很簡單?或者其他方式?
謝謝。 (對不起,我的英文)
我有一個綁定到屬性的DataGridViewTextBoxColumn。我想讓用戶輸入數字,無論他用什麼來分隔小數。此外,我不需要空格或逗號分隔thousads。結合之前DataGridView:如何允許逗號和點作爲分隔符同時
1.908 = 1.908
1908 = 1.908
如果沒有辦法指定格式字符串,我可以更換( 「 」「」):
很簡單?或者其他方式?
謝謝。 (對不起,我的英文)
克里特字符串類型的另一個屬性,它將綁定到該列。
然後通過這個
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中進行調試才能加載新的設置。
(我不會建議試圖解析逗號和點作爲同一用戶的小數點分隔符,如果你想這樣做。這不是大多數用戶的預期行爲,並且如果用戶應該恰好也使用千位分隔符。)
歡迎堆棧溢出設定原產權/讀值。你可以使用'Replace',但我不推薦這個。因爲在這種情況下,用戶_might_將千位分隔符放在'.'中,這對您使用的文化設置可能不明確。我建議在UI部分中添加一些驗證,以便爲小數提供_proper_格式。 –