2013-04-29 4 views
-1

У меня есть 2 текстовых поля, из которых я пытаюсь собрать данные. Я зацикливаю их, но когда программа собирается собирать данные у них, и они не имеют никакого значения, они пусты, я получаю исключение в формате, говоря: «Строка ввода не была в правильном формате».Исключение формата из текстового поля

if (this.Controls["txt_db0" + count].Text != null) 
{ 
    //if the value in the textbox is not null 
    int db = int.Parse((this.Controls["txt_db0" + count].Text)); 
    //set my "db" integer to the value of the textbox. 
} 

я поставил, если заявление там, чтобы отфильтровать, если нет значения в них, даже Тхо я получаю исключение формат, так что я должен делать что-то неправильно.

+2

Поставьте точку останова на ' int db = ... 'и проверьте значение' this.Controls ["txt_db0" + count] .Text'. – zimdanen

+0

Ну зависит от того, что вы нашли время отладки это :) – phadaphunk

+0

'Так что формат это может быть в текстовом поле, что компилятор не может Parse/Преобразовать в Int?' Я не знаю, что * может * быть? * ВАМ * необходимо пройти свой код и узнать, какие значения 'int.Parse' терпят неудачу. Вероятно, вы ответите на свой вопрос в процессе, а если нет, предоставьте некоторую информацию, необходимую кому-либо, чтобы ответить на этот вопрос. – tnw

ответ

1

проверить вашу работу, которую вы можете сделать это

int testInt; 
if (int.TryParse(this.Controls["txt_db0" + count].Text,out testInt)) 
{ 
    //if the value in the textbox is not null 
    int db = testInt; 
    //set my "db" integer to the value of the textbox. 
} 
else 
    MessageBox.Show(this.Controls["txt_db0" + count].Text + " Not an Int"); 
+1

Текстовое свойство элементов управления (в .NET-framework) никогда не является нулевым. –

+0

@MartinMulder: yup :) ты прав, я редактирую свой ответ – Akrem

0

int.Parse сгенерирует исключение, если:

  • Строка ввода содержит буквы или другие специальные символы, которые не могут быть признаны в качестве номер.
  • Строка ввода - это пустая строка.

Если вы уверены, что ваши входные строки содержат только цифры, проверьте, если ваша строка пуста первый перед преобразованием:

string input = this.Controls["txt_db0" + count].Text; 
int db = input == "" ? 0 : int.Parse(input); 

или вы могли бы использовать:

int db; 
if (!int.TryParse(this.Controls["txt_db0" + count].Text, out db)) 
    // Do something else. 
Смежные вопросы