計算ボタンを押すたびに、次のメッセージが表示されます: mscorlib.dll で 'System.FormatException' 型の未処理の例外が発生しました 追加情報: 入力文字列の形式が正しくありませんでした。
賃金入力が 9.75 ドルを下回ったときにメッセージを表示することになっています。
次に、次のコード行を強調表示します。
if (Convert.ToInt32(RateTextBox.Text) < 9.75m)
これがCalculate Buttonメソッドです(複数のエラーを犯したと確信しています):
private void CalcButton_Click(object sender, EventArgs e)
{ // The “Calculate” button calculates gross pay, taxes, and net pay and then displays name, department, gross pay, taxes, and net pay using currency format for various amounts in the rich text box
// Gross pay= (hours * rate)
// Taxes= (25% of gross pay)
// Net pay (gross pay ?taxes)
//calculate
Gross_pay = Convert.ToInt32(HoursTextBox.Text) * decimal.Parse(RateTextBox.Text);
Taxes = TAX * Gross_pay;
Net_Pay = Gross_pay - Taxes;
annual_salary = Net_Pay;
//display
DisplayOutPut.Text = "";
DisplayOutPut.Text += NameTextBox.Text + "\n";
DisplayOutPut.Text += "Hours:" + HoursTextBox.Text + "\n";
DisplayOutPut.Text += "Rate:" + RateTextBox.Text + "\n";
DisplayOutPut.Text += "Gross Pay:" + Gross_pay.ToString("C") + "\n"; // Hours*Rate
DisplayOutPut.Text += "Taxes:" + Taxes.ToString("C") + "\n";
DisplayOutPut.Text += "Net Pay:" + Net_Pay.ToString("C");
//handling the invalid inputs
if (NameTextBox.Text == "")
{ MessageBox.Show("Name is missing.", "Error"); }
if (Convert.ToInt32(HoursTextBox.Text) >= 70)
{ MessageBox.Show("Please Enter a Valid hour.", "Invalid data type."); }
if (RateTextBox.Text == "" && (RateTextBox.Text == ","))
{ MessageBox.Show("Please Enter a valid amount.", "Invalid data type ($)"); }
if (Convert.ToInt32(HoursTextBox.Text) >= 70)
{ MessageBox.Show("You have exceeded the maximum hours per week."); }
else if (Convert.ToInt32(HoursTextBox.Text) < 10)
{ MessageBox.Show("You cannot input less than 10 hours."); }
if (Convert.ToInt32(RateTextBox.Text) < 9.75m)
{ MessageBox.Show("Please enter the minimum wage."); }
//overtime pay
if (Convert.ToInt32(HoursTextBox.Text) >= 41)
{
Gross_pay = Convert.ToInt32(HoursTextBox.Text) * decimal.Parse(RateTextBox.Text) * 1.5m;
DisplayOutPut.Text += "Gross Pay:" + Gross_pay.ToString("C") + "\n";
}
//Medical/Dental and 401k deductions...as well as tax collected.
if (MedicalDentalDeductions.Checked)
{
Gross_pay = Convert.ToInt32(HoursTextBox.Text) * decimal.Parse(RateTextBox.Text) - 50.00m;
}
if(FourOneKDeduction.Checked)
{
Gross_pay = Convert.ToInt32(HoursTextBox.Text) * decimal.Parse(RateTextBox.Text) - 0.05m * 100;
}
if ((MedicalDentalDeductions.Checked) && (FourOneKDeduction.Checked))
{ Taxes = TAX * Gross_pay; }
DisplayOutPut.Text= "Medical/Dental deduction:" + Taxes +"401k deduction:"+ Taxes;
}