2013-03-17 2 views
-1

У меня есть вопрос по моему коду ниже. Я пытаюсь использовать метод int.TryParse для проверки ввода пользователя (если пользователь помещает «abc» в TextBox, он должен отображать сообщение об ошибке пользователя, это неправильный ввод и что они должны вводить целое число.) , Мне было интересно, почему мой код не хочет работать. Вот что у меня есть:Метод TryParse

private void CalcStayChargesButton_Click(object sender, EventArgs e) 
{ 
    // Get the user input. 
    NumberOfDays = int.Parse(DaysInHospitalChargesTextBox.Text); 
    if (int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
    { 
     MessageBox.Show("Please enter a whole number."); 
    } 
} 

Там нет ошибок, когда в представлении кода, но при запуске приложения, чтобы проверить это, она восходит к 4-й строке и выдвигает на первый план, но я не мог понять вне. Помните, что целое число NumberOfDays установлено ниже начала формы, чтобы я мог использовать его повсеместно во всем приложении. Кто-нибудь, пожалуйста, дайте мне какие-нибудь намеки на то, как заставить его работать? Возможно, я что-то упустил. Огромное спасибо.

ответ

0

int.TryParse возвращает ложь, при разборе не было возможности, поэтому вы должны положить ! в ваше состояние:

private void CalcStayChargesButton_Click(object sender, EventArgs e) 
{ 
    // Get the user input. 
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
    { 
     MessageBox.Show("Please enter a whole number."); 
    } 
} 

Почему с помощью int.Parse, а затем int.TryParse? Используйте один из них, а не оба.

Вы также должны иметь переменную под названием NumberOfDays, которая должна быть int. Если нет такой переменной в классе, добавьте перед тем if заявление:

int NumberOfDays; 
if(!int.TryParse(...)) 
0

Я думаю, что это то, что вы хотите:

private void CalcStayChargesButton_Click(object sender, EventArgs e) 
{ 
    // Get the user input. 
    int NumberOfDays; 
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
    { 
     MessageBox.Show("Please enter a whole number."); 
    } 
} 

Ваш первый вызов int.Parse будет сгенерировано исключение, если это не номер синтаксического анализа - для этого используется TryParse, он просто возвращает false, если он не может разобрать номер. Кроме того, ваша логика отображала сообщение, когда оно является допустимым числом, поэтому вам нужно !, чтобы заставить оператор разрешать true, если число не может быть проанализировано.

+0

О, хорошо. Я полностью упустил из виду, что дважды пытался сыграть в «Парсе». Извините за это все. Это было слишком просто. Спасибо всем, кто мне помог. Этого должно быть достаточно для завершения моего заявления, еще раз спасибо. – Cindy

1
if (int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
     { 
      MessageBox.Show("Please enter a whole number."); 
     } 

, делая это, если синтаксический успешно, то отображается это сообщение, вы должны вместо этого сделать этот

if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
     { 
      MessageBox.Show("Please enter a whole number."); 
     } 
0

int.TryParse (Что-то, из значения) пытаются разобрать значение «Нечто» и установите значение out (если это было нормально). int.TryParse возвращает истину, если это было нормально

Так для примера, что вы должны сделать, это (и ложь, что не в порядке.):

private void CalcStayChargesButton_Click(object sender, EventArgs e) 
{ 
    int NumberOfDays; //Create the variable 
    //try to parse DaysInHosputalChargesTextBox.Text 
    if (!(int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))) 
    { 
     // "!" means the parsing was not ok. So the user should reenter the number  
     MessageBox.Show("Please enter a whole number."); 
    } 
    else 
    { 
     //some code to do if the parsing was successful. 
    } 
} 

См msdn documentation для получения дополнительной информации.

0

Посмотрите, как это int.TryParse используется

private void CalcStayChargesButton_Click(object sender, EventArgs e) 
{ 
    int NumberOfDays; 
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays)) 
    { 
     MessageBox.Show("Please enter a whole number."); 
    } 
}