更改了文本框中返回错误值的值

时间:2013-12-29 07:27:48

标签: c# textbox numbers return invalidation

This is my problem

 private void P1STRtextbox_TextChanged(object sender, EventArgs e)
    {

        if (Convert.ToInt32(P1STRtextbox.Text) > Convert.ToInt32(P1RemainingStatPointsLabel.Text))
        {
            MessageBox.Show("You have enter a number larger than your remaining stat points!");
        }           
        else
        {
            P1RemainingStatPointsLabel.Text = (PlayerOne[P1ClassNumber].TotalStatPoints - Convert.ToInt32(P1STRtextbox.Text)).ToString();
        }
    }
    private void P1DEXtextbox_TextChanged(object sender, EventArgs e)
    {
        if (Convert.ToInt32(P1DEXtextbox.Text) > Convert.ToInt32(P1RemainingStatPointsLabel.Text))
        {
            MessageBox.Show("You have enter a number larger than your remaining stat points!");
        }
        else
        {
            P1RemainingStatPointsLabel.Text = (PlayerOne[P1ClassNumber].TotalStatPoints - Convert.ToInt32(P1DEXtextbox.Text)).ToString();
        }
    }

基本上,当框中的文本发生更改时,会触发事件。当我首先在强度文本框中输入一个数字时,它会正确地进行推理,但是当我进入Dexterity框并尝试编辑该值时,它不能正确地进行推导。如图所示(剩余的统计点),3000-(250 + 750)!= 2250;有人可以给我一些合乎逻辑的建议吗?感谢您提前花时间和精力!

2 个答案:

答案 0 :(得分:2)

如何更改P1DEXtextbox_TextChanged else语句以使用下面的内容?

P1RemainingStatPointsLabel.Text = (PlayerOne[P1ClassNumber].TotalStatPoints - (Convert.ToInt32(P1STRtextbox.Text) + Convert.ToInt32(P1DEXtextbox.Text))).ToString();

答案 1 :(得分:2)

您永远不会添加力量和灵巧度值。更改剩余的统计值时,您需要考虑两个字段:

int strength = Convert.ToInt32(P1STRtextbox.Text);
int dexterity = Convert.ToInt32(P1DEXtextbox.Text);
P1RemainingStatPointsLabel.Text = (PlayerOne[P1ClassNumber].TotalStatPoints - (strength + dexterity)).ToString();

您还必须确保在将文本转换为整数时处理可能的错误。