ASP.NETとC#で少し問題があります。これは私のエラーコードです:
タイプ 'System.FormatException'の例外がmscorlib.dllで発生しましたが、ユーザーコードでは処理されませんでした
追加情報:入力文字列の形式が正しくありませんでした。
protected void Page_Load(object sender, EventArgs e)
{
if(this.IsPostBack == false)
{
Currency.Items.Add(new ListItem("Euro", "0.85"));
Currency.Items.Add(new ListItem("Yen", "11.30"));
Currency.Items.Add(new ListItem("PLN", "4.20"));
Currency.Items.Add(new ListItem("GBP", "5.62"));
}
}
protected void Convert_Click(object sender, EventArgs e)
{
decimal oldAmount;
bool succes = Decimal.TryParse(TextBox.Value, out oldAmount);
if(succes)
{
ListItem item = Currency.Items[Currency.SelectedIndex];
decimal newAmount = oldAmount * decimal.Parse(item.Value);
Result.InnerText = "Result: " + newAmount;
}
}
Decimal.Parse、Decimal.TryParse、その他の奇妙な組み合わせを試しました。今、私は問題が文字列とそれらを10進数に解析することであると確信しています。文字列変数を作成したとき-解析中に同じエラーが発生しました。では、文字列を10進数に変換するために何をすべきかを誰かに教えてもらえますか?
「0.85」の代わりに「0,85」を使用してみてください。カルチャーを変えればドット10進数が使えると思います。ここにいくつかの詳細があります: 小数点の記号をdouble.ToString()で変更する方法
以下のコードスニペットでお試しください。
CultureInfo info = CultureInfo.GetCultureInfo("es-ES");
string storedValue = "3,85";
decimal oldAmount;
bool succes = Decimal.TryParse(storedValue, NumberStyles.Any, info, out oldAmount);
代わりにTextBox.Textを使用します。
bool succes = Decimal.TryParse(TextBox.Text, out oldAmount);
TextBox.valueが間違っています。 YourTextBox.Textは正しい...!
bool success = Decimal.TryParse(TextBox.Text, out oldAmount);