Исключение; Исключение типа "System.FormatException" произошло в mscorlib.ni.dll, но не было обработано в коде пользователя

Привет, у меня есть приложение для Windows Phone 8 У меня есть исключение

Исключение типа "System.FormatException" произошло в mscorlib.ni.dll, но не было обработано в коде пользователя

Вот код

private void Button_Click_1(object sender, RoutedEventArgs e)
 {
 ****** basestolen;
 ****** attempedstales;
 ****** avarege;
 ****** putout;
 if (puttext.Text.Length == 0 | basetext.Text.Length==0 )
 {
 MessageBox.Show(" Enter Values for Base Stolen and Putouts ");
 }
 basestolen = Convert.********(basetext.Text);
 putout = Convert.********(puttext.Text);
 attempedstales = basestolen + putout;
 if (attempedstales != 0 )
 {
 avarege = (((basestolen / attempedstales) / 100));
 avarege = avarege * 10000;
 avgtext.Text = Convert.ToString(avarege);
 }
 else
 {
 MessageBox.Show("Attemped Stales Value should not be Zero");
 }
 }

Запуск приложения и если я не ввожу значение в текстовые поля, он возвращает поле msg, но после этого приложение остановится и вернет изъятие выше? в чем проблема?

2 ответа

Скорее всего, ошибка здесь:

basestolen = Convert.********(basetext.Text);
putout = Convert.********(puttext.Text);

Он выдает исключение FormatException, если число не соответствует допустимому. (подробнее см. здесь). Попробуйте использовать ******.TryParse, чтобы безопасно проанализировать ваши значения.

****** result; 
bool success = ******.TryParse(basetext.Text, NumberStyles.Any, CultureInfo.InvariantCulture, out result);


Вы забыли остановить выполнение своего метода после отображения окна сообщения:

if (puttext.Text.Length == 0 || basetext.Text.Length==0 )
{
 MessageBox.Show(" Enter Values for Base Stolen and Putouts ");
 return;
}

Кроме того, при преобразовании строк в ****** обязательно укажите культуру. Приложение Windows Phone будет выполняться пользователями по всему миру, а некоторые страны используют разные десятичные разделители. Например:

basestolen = Convert.********(basetext.Text, CultureInfo.InvariantCulture);

licensed under cc by-sa 3.0 with attribution.