не знаю, как правильно конвертировать - PullRequest
0 голосов
/ 23 октября 2011
int a = Convert.ToInt32(subjectsLabel1.Text);
int b = int.Parse(internetLabel1.Text);
int total = a+b;
label1.Text = total.ToString();

ошибка "Входная строка была в неправильном формате."продолжает выскакивать.Я попытался преобразовать, используя синтаксис int.parse и convert.toint32, но та же самая ошибка продолжает появляться.

* значения в subjectLabel1 и internetlabel1 будут поступать из базы данных (которая быласделано в визуальной студии) с типом данных varchar (10).

Ответы [ 3 ]

3 голосов
/ 23 октября 2011

Нет ничего плохого в том, как вы анализируете эти строковые значения в целые числа. Просто их значение не представляет действительное целое число, поэтому оно не может быть проанализировано и выдается исключение. Вы можете использовать метод int.TryParse для изящной обработки этого случая:

int a;
int b;
if (!int.TryParse(subjectsLabel1.Text, out a))
{
    MessageBox.Show("please enter a valid integer in subjectsLabel1");
} 
else if (!int.TryParse(internetLabel1.Text, out b))
{
    MessageBox.Show("please enter a valid integer in internetLabel1");
}
else
{
    // the parsing went fine => we could safely use the a and b variables here
    int total = a + b;
    label1.Text = total.ToString();
}
0 голосов
/ 23 октября 2011

Нельзя преобразовать в Int32, если строка содержит десятичную точку или ее недопустимое целое число. Проверка

string test = "15.00"
int testasint = Convert.ToInt32(test); //THIS WILL FAIL!!!

Поскольку Int32 не поддерживает десятичные дроби.Если вам нужно использовать десятичные дроби, используйте Float или Double.

Так что в этой ситуации вы можете использовать

int.TryParse 

также

0 голосов
/ 23 октября 2011

Если вы не уверены, что пользователь дает вам законное значение Int32 для преобразования, вы можете использовать:

int result;

if (!int.TryParse(subjectsLabel.Text, out result))
{
 ShowAMessageToTheUser();
}
else
{
 UseResult();
}

Использование TryParse не вызовет исключение при попытке проанализировать строку. Вместо этого он вернет false, а параметр out недопустим для использования.

...