2014-02-24 7 views
-2

Моя программа содержит текстовое поле. Мне нужно проверить, есть ли у него только цифры, а затем распечатать.int.TryParse() allways возвращает true

 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

Вы разбор 'label.Text' в вашем' оператора TryParse', не 'TextBox.Text'. – 48klocs

+2

Вы сможете легко найти такие ошибки, используя отладчик. Попробуй. – usr

ответ

1

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"); 
     } 
    } 
0

Возможно, вы хотите, чтобы проверить значение 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"); 
} 
+0

правый правый правый правый! Спасибо, парни! Я не знаю, как я это пропустил! Спасибо! –