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

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 回答
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 回答
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 回答