2013-10-13 4 views
1

Я создал приложение для окон с 3 текстовыми полями. Для работы программы мне нужно, чтобы все три поля заполнялись цифрой. Они могут быть положительными или отрицательными.C++/cli проверить, является ли значение числом

Я использовал это:

if(this->textBox1->Text=="" || this->textBox2->Text=="" || this->textBox3->Text=="") { 
    MessageBox::Show("Error"); 
} 
else { 
    // continue with the program... 
} 

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

ответ

2

Я предполагаю, что вы на самом деле хотите сделать что-то с этими числами?

Так тест на ошибки преобразования:

int number1; 
if (!int::TryParse(textBox1->Text, number1)) { 
    MessageBox::Show("First box wasn't an integer"); 
    return; 
} 

double number2; 
if (!double::TryParse(textBox2->Text, number2)) { 
    MessageBox::Show("Second box wasn't numeric"); 
    return; 
} 

В конце концов, у вас есть номера number1 и number2 для использования в расчетах.

Вам больше не понадобится отдельный тест для пустой строки, так как TryParse вернет false, если вход пуст.

+0

Спасибо. Это работает с int, но я получаю ошибку с двойным, когда я ввожу что-то вроде 2.5 – user2765257

+0

@ user2765257: Я использовал 'TryParse' для удваивания раньше, без проблем, поэтому я предлагаю вам снова взглянуть на ваш код, вы, возможно, не будете конвертируя то, что вы думаете. –

+0

Так вот где я получаю ошибку: 'number = System :: Convert :: ToInt32 (this-> textBox1-> Text);' TryParse передает этот номер, но программа прерывается, когда я пытаюсь его преобразовать. – user2765257

1

Использование Double.TryParse():

Double x; 
array<TextBox^>^ inputs = gcnew array<TextBox^>(3); 
inputs[0] = this->textBox1; 
inputs[1] = this->textBox2; 
inputs[2] = this->textBox3; 

for (int i = 0; i < inputs->Length; i++) 
{ 
    if(!Double::TryParse(inputs[i]->Text, x)) 
    { 
     MessageBox::Show("Error", String::Format("Cannot parse textBox{0} as number", i+1)); 
    } 
} 
+1

Синтаксис C#, протекающий в ваш C++? –

+0

Этот неуместный токен «out» все еще там ... –

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