2011-11-23 61 views
1

我有下面的代碼可以正常工作,但是如果我將文本框留空,它會引發錯誤。我想先檢查是否有空白,然後在lblSalary.Text中輸出錯誤信息。我怎麼能重新寫這個? C#如果文本框爲空,標籤會拋出錯誤

感謝

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Double AnnualHours; 
     AnnualHours = Convert.ToDouble(txtAnnualHours.Text); 
     Double Rate; 
     Rate = Convert.ToDouble(txtRate.Text); 
     Double Salary; 
     Salary = (AnnualHours * Rate); 
     lblSalary.Text = "$" + Salary.ToString(); 
    } 
} 
+2

這是一個功課題嗎?如果是這樣,你應該添加「家庭作業」標籤。 – ethan

回答

4

代替convert.ToDouble使用double.TryParse和處理它返回false的情況。

double AnnualHours; 
if (!double.TryParse(txtAnnualHours.Text, out AnnualHours)) 
{ 
    // Set label text here, as we couldn't convert to a double 
} 
else 
{ 
    // AnnualHours contains the double value. 
} 

注:因爲你與金錢打交道,你應該使用decimal類型,而不是double類型。十進制可以正確表示基數爲10的數字(123,157.2,0.5),而double不能。

在這裏看到:decimal vs double! - Which one should I use and when?

1

使用Double.TryParse()解析字符串中的安全方式

protected void Button1_Click(object sender, EventArgs e) 
{ 
    double annualHours = 0; 
    double.TryParse(txtAnnualHours.Text, out annualHours); 
    double rate = 0; 
    double.TryParse(txtRate.Text, out rate); 
    double salary = (annualHours * rate); 
    lblSalary.Text = "$" + salary.ToString(); 
} 

如果你需要做一些有條件的計算取決於價值是否提供或不提供(用戶在輸入一個有效的數字文本框):

bool isAnnualHoursValid = double.TryParse(txtAnnualHours.Text, out annualHours); 
if (isAnnualHoursValid) 
{ 
    // ask user to enter valid value or use some default 
} 
相關問題