2

このコードを C# で動作させようとしています。テキストフィールドが更新されて整数 (HP は整数) であることを検証する必要があります。

したがって、入力を整数に変換しようとすることで、新しい整数を取得して値を設定するか、失敗した場合は、以前に検証された値を取得してテキスト フィールドにプッシュ バックします (入力をほとんど無視して、更新され、検証済みの入力になります)。

私の頭の中では、これはすべて論理的で機能していますが、実際にはそうではありません。助けてください。

private void Input_HP_TextChanged(object sender, EventArgs e)
{
    Try
    {
        HP = Convert.ToInt32(Input_HP.Text);
    }
    catch(Exception e)
    {
        Input_HP.Text = HP;
    }
}
4

3 に答える 3

3

try.parse を使用できますが、一時変数に設定する必要があります。あなたの場合、 HP を使用すると、保存したい変数が上書きされます。

int tempInt;
if(Int32.TryParse(Input_HP.Text, out tempint))
{
    HP = tempInt;
}
else
{
    Input_HP.Text = HP.ToString();
}
于 2012-06-13T21:14:08.353 に答える
3

Int.TryParse はおそらくあなたが探しているものです:

int HP;
if (int.TryParse(Input_HP.Text, out HP))
{
  // the number is an integer at this point
}
于 2012-06-13T21:11:32.690 に答える
1

HP が整数の場合Text、これは 型であるため、プロパティに直接割り当てることはできませんString。これはコンパイル時エラーであるはずです。コードのこの部分では、.ToString()関数を使用する必要があります...

Input_HP.Text = HP.ToString();

もちろん、TryParseとにかくこの変換には a を使用する必要があります。私はあなたが望むものはこのようなものだと思います...

private void Input_HP_TextChanged(object sender, EventArgs e)
{
    int i = 0;
    if(int.TryParse(Input_HP.Text, out i))
    {
       HP = i;
    }
    else
    {
       Input_HP.Text = i.ToString();
    }
}
于 2012-06-13T21:16:41.707 に答える