代码之家  ›  专栏  ›  技术社区  ›  Dooodoo

int.TryParse()始终返回true[closed]

  •  -2
  • Dooodoo  · 技术社区  · 10 年前

    我的程序包含一个文本框。 我需要检查它是否只有数字,然后打印。

            int num;
            if (this.Tree.GetType() == Main.TestInt.GetType())
            {
                if (int.TryParse(this.label.Text,out num) == true) // i tried without the == before
                {
                    this.Tree.SetInfo(int.Parse(this.TextBox.Text));
                    base.label.Text = base.TextBox.Text;
                }
                else
                {
                    base.TextBox.Text = "";
                    MessageBox.Show("Only Numbers Allowed", "Error");
                }
            }
    

    问题是,由于某种原因,它总是返回真值,并转到

        this.Tree.SetInfo(int.Parse(this.TextBox.Text));
    

    为什么会这样?

    2 回复  |  直到 10 年前
        1
  •  1
  •   Jacob Krall    10 年前

    2项变更:

        int num;
        if (this.Tree.GetType() == Main.TestInt.GetType())
        {
            if (int.TryParse(this.TextBox.Text,out num)) //1,  you were parsing label.Text
            {
                this.Tree.SetInfo(num); //2, don't bother parsing it twice!
                base.label.Text = base.TextBox.Text;
            }
            else
            {
                base.TextBox.Text = "";
                MessageBox.Show("Only Numbers Allowed", "Error");
            }
        }
    
        2
  •  0
  •   Sachin    10 年前

    也许你想检查 TextBox 而不是 Label 。所以应该是 this.TextBox.Text 而不是 this.Label.Text

    if (int.TryParse(this.TextBox.Text,out num))
    {
      this.Tree.SetInfo(this.TextBox.Text);
      base.label.Text = base.TextBox.Text;
    }
    else
    {
      base.TextBox.Text = string.Empty;
      MessageBox.Show("Only Numbers Allowed", "Error");
    }