我正在尝试在用户关闭我的应用程序后显示一个消息框。此消息框让用户根据其购买情况了解某些内容。我的问题是我的程序在读取文本框中的"$"时崩溃。这是我目前所处的位置:
private void exitButton_Click(object sender, EventArgs e)
{
if
(MessageBox.Show("Are you sure you want to exit?",
"Confirm exit...",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
decimal Discount;
Discount = decimal.Parse(postDiscountCostTextBox.Text);
if (Discount <= 999.99m)
{
MessageBox.Show("This amount qualifies for 'A-100' frequent flier miles.",
"",
MessageBoxButtons.OK);
}
}
{
this.Close();
}
}
当我从文本框中删除"$"时,该程序运行良好,但是,它需要在最终产品中存在。任何帮助将不胜感激。
请改用这个:
Discount = decimal.Parse(postDiscountCostTextBox.Text.Replace("$", ""));
如果系统上的当前区域性具有货币的美元符号以外的符号,该怎么办?
正确的方法是指定"Currency"NumberStyles并使用TryParse()而不是Parse():
decimal Discount;
if (decimal.TryParse(postDiscountCostTextBox.Text, System.Globalization.NumberStyles.Currency, null, out Discount))
{
if (Discount <= 999.99m)
{
MessageBox.Show("This amount qualifies for 'A-100' frequent flier miles.",
"",
MessageBoxButtons.OK);
}
}
else
{
// ... invalid value in textbox ...
// Dipslay a MessageBox?
}