Member 9983063 Ответов: 2

Я получаю ошибку, когда сравниваю два значения текстового поля в C#


Привет, Ребята! я получаю ошибку, когда сравниваю два значения текстового поля в c# \
ошибка заключается в том, что входная строка была не в правильном формате
пожалуйста, помогите мне и скажите мне решение

Что я уже пробовал:

if (int.TryParse(textBox00.Text) > int.TryParse(txtTotal.Text))
                        {
                            MessageBox.Show("Amount is less than bill amount", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                        else
                        {

cvogt61457

TryParse () возвращает bool независимо от того, было ли значение успешно проанализировано. Не целочисленное значение.
Чтобы получить значение, вам нужно указать выходную переменную или использовать int. Parse ().
Если вы используете int. Parse (), вам нужно будет убедиться, что значение разбирается правильно.
Мне любопытно, как вы получили эту компиляцию.

Philippe Mori

Если вы получили эту ошибку, то, вероятно, используете int.Parse и вход не является допустимым. Пожалуйста, опубликуйте реальный код, который вы используете Кроме того, если вы получаете ошибку, вы также должны указать содержимое текстовых полей.

Другое дело, что вы должны дать своим элементам управления осмысленные имена. textBox00 это не очень информативно.

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

2 Ответов

Рейтинг:
16

Mehedi Shams

Привет Член 9983063,

Это не тот путь TryParse() работает. TryParse() требуется два параметра - один-это текст для преобразования в целое число, а второй-выходная переменная, в которой хранится преобразованное значение. Код, который вы предоставили, переводится в:

if (Boolean > Boolean)     // You are trying to compare booleans.
{
    MessageBox.Show("Amount is less than bill amount", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
}
Это само по себе неверно, поскольку булево значение можно сравнить с другим булевым значением только для "= = "и"!=". Логически вы не можете сказать: "если истина больше, чем ложь". Таким образом, это еще одна ошибка компиляции вместе с другой ошибкой компиляции для TryParse().

Вы можете попробовать следующий подход:
int textBox00Val, txtTotalVal;
if (int.TryParse(textBox00.Text, out textBox00Val) == false)    // This line checks if there is an integer in the box, and also converts it to an integer.
{
    MessageBox.Show("textBox00 value must be anumber.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
}

if (int.TryParse(txtTotal.Text, out txtTotalVal) == false)      // This line checks if there is an integer in the box, and also converts it to an integer.
{
    MessageBox.Show("txtTotal value must be anumber.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
}

if (textBox00Val > txtTotalVal)     // Now you need to compare the integers.
{
    MessageBox.Show("Amount is less than bill amount", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
}
............
............
Здесь происходит следующее: Вы получаете значения в целых числах, а затем сравниваете их.

@cvogt61457: я предполагаю, что член 9983063 имел в виду ошибку компиляции, так как код, о котором идет речь, никогда не будет компилироваться (TryParse() должно быть предоставлено два параметра, и булево значение не может быть сравнено с другим булевым значением для оператора "больше").


Member 9983063

что значит должно быть число bcz в моем проекте пользователь просто может написать только целое число но это шоу должно быть числом

Mehedi Shams

Привет член 9983063,это всего лишь сообщение; пожалуйста, измените его в соответствии с требованиями. Число и целое число предназначены для одного и того же.

Karthik_Mahalingam

5

Рейтинг:
0

Jean-Claude ADIBA

Привет попробуй это

 int textBox00 = 0;
 int txtTotal = 0;

if(int.TryParse(textBox00.Text, out textBox00) && int.TryParse(txtTotal.Text,out txtTotal))
 {
     if (textBox00 > txtTotal)
     {
         MessageBox.Show("Amount is less than bill amount", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return;
     }else
     {

     }
 }else
 {
     //Conversion error
     MessageBox.Show("no valid number found", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

 }