現狀:驗證貨幣允許多於兩位小數
我正在寫使用C#在VS2013與.NET4.0 WinForms應用程序。
datagridview中的某些單元格需要驗證爲正確格式的英國貨幣值。 dgv單元格格式設置爲帶有兩位小數的貨幣。爲了驗證我使用下面的代碼:
decimal convertedCurrency;
if (decimal.TryParse(dataGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString(), NumberStyles.Currency, null, out convertedCurrency))
{
if (convertedCurrency > columnDetails.MaxValue || convertedCurrency < 0)
{
this.ReportError(dataGrid, e, dataGrid.Columns[e.ColumnIndex].HeaderText + " must be between £0 and £" + columnDetails.MaxValue);
}
}
else
{
this.ReportError(dataGrid, e, "Incorrect format for a money value");
}
問題:
這工作prefectly除非用戶輸入例如多於兩位小數的值100.001。這被認爲是有效的,並且這個值被寫入數據庫。
問:
我怎樣才能最好的驗證,使得具有兩個以上的小數位用戶輸入捕獲和處理?我當然可以進入一些混亂的字符串處理,但有沒有更優雅的方式,理想情況下繼續使用TryParse?
見http://stackoverflow.com/questions/13477689/find-number-of-decimal-places-in-decimal-value-regardless-of-culture找到小數位的數量。只需確認它是<= 2。 –
真的很有用@JaredMoore。如果這是在回答而不是評論中,我會鼓勵你。 – ifinlay
乾杯,轉換爲答案。 –