2013-03-17 83 views
-1

我對下面的代碼有疑問。我正在嘗試使用int.TryParse方法來檢查用戶的輸入(如果用戶在文本框中放置「abc」,它應該顯示一個錯誤,告訴用戶,這是錯誤的輸入,並且他們應該輸入一個整數。) 。我想知道爲什麼我的代碼不想工作。以下是我有:TryParse方法

private void CalcStayChargesButton_Click(object sender, EventArgs e) 
{ 
    // Get the user input. 
    NumberOfDays = int.Parse(DaysInHospitalChargesTextBox.Text); 
    if (int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
    { 
     MessageBox.Show("Please enter a whole number."); 
    } 
} 

有沒有錯誤代碼視圖時,但是當我運行應用程序進行測試,它可以追溯到4號線,並強調它,但我想不出它出。請記住,NumberOfDays整數已經設置在表格的開頭下方,以便我可以在整個應用程序中普遍使用它。有人請給我一些關於如何使其工作的提示嗎?我可能忽視了一些東西。謝謝一堆。

回答

0

int.TryParse返回false,在解析時是不可能的,所以你必須把!到您的條件:

private void CalcStayChargesButton_Click(object sender, EventArgs e) 
{ 
    // Get the user input. 
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
    { 
     MessageBox.Show("Please enter a whole number."); 
    } 
} 

爲什麼使用int.Parse然後int.TryParse?使用其中之一,而不是兩者。

您還必須有一個名爲NumberOfDays的變量,它必須是int類型。如果沒有這樣的類變量,添加一個前if聲明:

int NumberOfDays; 
if(!int.TryParse(...)) 
0

我想這是你想要什麼:

private void CalcStayChargesButton_Click(object sender, EventArgs e) 
{ 
    // Get the user input. 
    int NumberOfDays; 
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
    { 
     MessageBox.Show("Please enter a whole number."); 
    } 
} 

您對int.Parse第一調用將拋出如有異常它不是可分析的數字 - 這就是TryParse的用途,如果它不能解析數字,它只會返回false。此外,您的邏輯在顯示消息的時候是一個有效的號碼,所以您需要!以使該語句在無法解析的情況下解析爲真。

+0

哦,沒關係。我完全忽略了我試圖解析兩次。對不起這個人。這太簡單了。謝謝所有幫助過我的人。這應該足以讓我完成我的申請,再次感謝你。 – Cindy 2013-03-17 17:43:58

1
if (int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
     { 
      MessageBox.Show("Please enter a whole number."); 
     } 

通過這樣做,如果解析成功,則顯示此消息則應該這樣做

if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
     { 
      MessageBox.Show("Please enter a whole number."); 
     } 
0

int.TryParse(有什麼,超時值)嘗試解析「東西」的價值並設置該值(如果這是好的)。 int.TryParse如果這是確定返回true

因此,對於你比如你應該做的是(假的也不行。):

private void CalcStayChargesButton_Click(object sender, EventArgs e) 
{ 
    int NumberOfDays; //Create the variable 
    //try to parse DaysInHosputalChargesTextBox.Text 
    if (!(int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))) 
    { 
     // "!" means the parsing was not ok. So the user should reenter the number  
     MessageBox.Show("Please enter a whole number."); 
    } 
    else 
    { 
     //some code to do if the parsing was successful. 
    } 
} 

更多信息請參見msdn documentation

0

瞭解如何爲int.TryParse使用

private void CalcStayChargesButton_Click(object sender, EventArgs e) 
{ 
    int NumberOfDays; 
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
    { 
     MessageBox.Show("Please enter a whole number."); 
    } 
}