2016-03-19 2 views
1

Я разрабатываю приложение для Windows-телефона в Visual Studio, и это мой первый раз, когда я использую язык C#, потому что я разработчик Android, и я могу Не поймите, почему мое приложение падает при нажатии кнопки, если ничего не введено.Приложение падает, когда ничего не вводится в TextBoxes. Я пытаюсь разобрать

Если кто-то может помочь, это будет потрясающе. Большое спасибо!!

private void sum_Click(object sender, RoutedEventArgs e) 
{ 
    decimal n1 = decimal.Parse(num1.Text); 
    decimal n2 = decimal.Parse(num2.Text); 
    decimal n3 = decimal.Parse(num3.Text); 

    if (n1.Equals(null) || n2.Equals(null) || n3.Equals(null)) 
    { 
     sum1.Text = "Enter something!"; 
    } 
    else 
    { 
     decimal sum = n1 + n2 + n3; 
     String m = Convert.ToString(sum); 
     sum1.Text = m; 
    } 
} 
+0

decimal.parse приведет к ошибке, если вы скажете, что введено «a» .. его недействительным номером .. поэтому вам нужно проверить наличие ошибки, а не нуля. – BugFinder

+0

"c language"! = C# –

ответ

6

Попытки разобрать пустые текстовые поля (или поля с неверными данными) является наиболее вероятным кандидатом для метания исключения и вызывает сбой. Кроме того, результат decimal.Parse не будет null, поэтому часть if вашего блока if/else не будет выполнена.

Я бы рекомендовал вместо этого использовать decimal.TryParse, что позволяет вам что-то делать (например, отображать ваше сообщение) при сбое анализа.

private void sum_Click(object sender, RoutedEventArgs e) 
{ 
    decimal n1; 
    decimal n2; 
    decimal n3; 

    if (decimal.TryParse(num1.Text, out n1) 
     && decimal.TryParse(num2.Text, out n2) 
     && decimal.TryParse(num3.Text, out n3)) 
    { 
     decimal sum = n1 + n2 + n3; 
     String m = Convert.ToString(sum); 
     sum1.Text = m; 
    } 
    else 
    { 
     sum1.Text = "One or more fields has a missing/invalid value."; 
    } 
} 
Смежные вопросы