2013-05-15 2 views
-3

У меня проблема в моей форме окна в C#. Программа проста; есть 3 текстовых поля, а затем суммирует их значения. однако, когда я нажимаю кнопку суммы без ввода каких-либо значений в других трех текстовых окнах, программа вылетает из строя.Когда не вводится какое-либо значение, моя программа вылетает

Как я могу заставить эти текстовые поля принимать только положительные числа и нули? это то, что я сделал

private void button1_Click(object sender, EventArgs e) 
    { 
     double FirstNumb = Convert.ToDouble(txtFirstValue.Text); 
     double SecondNumb = Convert.ToDouble(txtSecondValue.Text); 
     double ThirdNumb = Convert.ToDouble(txtThirdValue.Text); 

     double m; 

     m = FirstNumb + SecondNumb + ThirdNumb; 
     listBox1.Items.Add(m); 


    } 
+1

Добро пожаловать в StackOverflow. Вам нужно предоставить дополнительную информацию, чтобы получить дополнительную помощь. Например: какой код выполняется при нажатии кнопки суммы? –

+0

Вы должны опубликовать свой код, поэтому нам не нужно угадывать, чтобы помочь вам. Но если ваш код ожидает, что какой-то номер сделает суммирование, то вполне естественно, что приложение будет разбиваться, если оно получит «» из текстового поля. Пустую строку нельзя добавить. –

+2

Вероятно, вы вызываете 'int.Parse()' (или что-то в этом роде), который выдает исключение из недопустимого ввода. Совет: пустая строка - неверный ввод. Вы должны либо использовать «TryParse()», либо проверять данные до разбора. – dlev

ответ

0

Вы хотите проверить, что строковое значение из текстового поля не является нулевым или пустым или иным образом недействительным. Измените эту строку:

double FirstNumb = Convert.ToDouble(txtFirstValue.Text);

к этому

double FirstNumb = 0; 
double.TryParse(txtFirstValue.Text, out FirstNumb); 

FirstNumb останется 0, если синтаксический анализ терпит неудачу. Обратите внимание, что TryParse возвращает bool, true, если синтаксический анализ был успешным и false в противном случае. Вы также можете принять меры по этому поводу, возможно, показывая MessageBox, попросив пользователя заполнить значение и выйти из метода суммирования.

Смотрите документацию для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/994c0zb1(v=vs.100).aspx

EDIT: Если вы хотите обеспечить только положительные значения, после того, как попытаться разобрать вы должны проверить, что FirstNumb> = 0 и использовать MessageBox для предупреждения пользователя почему и прервать метод суммирования.

1

попытаться решить с помощью int.TryParse. Это также обрабатывает строку.

Demo Reference

+2

Не полагайтесь на внешние ссылки, чтобы предоставить основную часть вашего ответа, поскольку ссылка может стать недействительной. – Andy

1

Вы, вероятно, пытается преобразовать содержимое Textboxes текстовую в междунар. К сожалению, вы не можете преобразовать пустую строку в число. Попробуйте установить содержимое по умолчанию для текстовых полей «0».

+0

вы можете объяснить больше plz :( –

Смежные вопросы