-1

以下のコードについて質問があります。メソッドを使用してユーザーの入力をチェックしようとしていint.TryParseます(ユーザーがTextBoxに「abc」を入力すると、ユーザーに間違った入力であり、整数を入力する必要があることを示すエラーが表示されます)。なぜ私のコードが機能したくないのか疑問に思いました。これが私が持っているものです:

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整数は、アプリケーション全体で普遍的に使用できるように、フォームの先頭の下にすでに設定されていることに注意してください。誰かがそれを機能させる方法について何かヒントを教えてくれませんか?何か見落としていたかもしれません。本当にありがとう。

4

5 に答える 5

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.");
        }
于 2013-03-17T17:41:25.730 に答える
0

int.TryParse(Something、out value)は、「Something」の値を解析し、値をoutに設定しようとします(これで問題がなかった場合)。int.TryParseは、これが問題ない場合はtrueを返します(問題がない場合はfalseを返します)。

したがって、あなたの例では、あなたがすべきことは次のとおりです。

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のドキュメントを参照してください。

于 2013-03-17T17:54:28.027 に答える
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ステートメントの前に1つ追加します。

int NumberOfDays;
if(!int.TryParse(...))
于 2013-03-17T17:40:51.153 に答える
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 を返します。また、ロジックは有効な数値の場合にメッセージを表示していたため!、数値を解析できない場合にステートメントを true に解決するには、そこに が必要です。

于 2013-03-17T17:40:58.097 に答える
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.");
    }
}
于 2013-03-17T18:00:04.713 に答える