【发布时间】:2018-11-20 08:14:59
【问题描述】:
我的数据库中有十进制(18, 0)数据类型的列。 当我尝试插入时,我得到“格式错误”。我喜欢这样...:
decimal amountToWithdraw = Convert.ToDecimal(txtAmountToTransfer.Text);
如果我写 25.89 那么这会给我错误消息“错误格式” 它适用于孔号,例如 25,但不适用于点 25.89
我在 Textbox 上使用这个 eventHandler:
private void txtAmountToTransfer_KeyPress(object sender, KeyPressEventArgs e)
{
char ch = e.KeyChar;
if(ch == 46 && txtAmountToTransfer.Text.IndexOf('.') != -1)
{
e.Handled = true;
return;
}
if(!Char.IsDigit(ch) && ch != 8 && ch != 46)
{
e.Handled = true;
}
}
这应该很容易,但我尝试了很多方法,但我还是没有让它起作用。提前谢谢你
【问题讨论】:
-
decimal.Parse 或 TryParse
-
好吧,如果是用户输入,那么
decimal.TryParse将是一个好主意(如果您没有屏蔽文本框或其他东西)。由于您当前的文化设置,它没有转换,我相信逗号,而不是点.会起作用。 -
如何检测当前的文化分隔符:
char a = Convert.ToChar(Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator);
标签: c# textbox decimal windows-forms-designer