C # Умножить текстовые поля отвечают всегда 1

У меня проблема со следующим кодом.

bool TextBox2INT = true;
bool TextBox1INT = true;

int outputValue = 0;
int ButtonFind;

int TextBox1INT2 = Convert.ToInt32(TextBox1INT);
int TextBox2INT2 = Convert.ToInt32(TextBox2INT);

TextBox2INT = int.TryParse(textBox2.Text, out outputValue);
TextBox1INT = int.TryParse(textBox1.Text, out outputValue);

ButtonFind = (int)Math.Round((double)(TextBoxt1INT2 * 0.0333m * TextBox2INT2) + (double)(TextBox1INT2));
textBoxFind.Text = ButtonFind.ToString();

Проблема в том, что код работает отлично, но когда я отлаживаю, ответ в textBoxFind.Text всегда равен 1.

c#,textbox,integer,double,multiplying,

0

Ответов: 1


3 принят

Вы звоните, Convert.ToInt32(bool)который только даст 0 или 1.

Я думаю, что вы имели в виду:

int TextBox1INT2, TextBox2Int2;

bool textBox1Valid = int.TryParse(textBox2.Text, out TextBox1INT2);
bool textBox2Valid = int.TryParse(textBox1.Text, out TextBox2INT2);

Вы также должны предпринять действия, если int.TryParseвернет false - например, попросив пользователя ввести действительное число, вместо того, чтобы в любом случае выполнять вычисления. Я бы также изменил ваши имена переменных, чтобы у вас было что-то вроде:

int parsedTextBox1, parsedTextBox2;

bool textBox1Valid = int.TryParse(textBox2.Text, out parsedTextBox1);
bool textBox2Valid = int.TryParse(textBox1.Text, out parsedTextBox2);

if (!textBox1Valid || !textBox2Valid)
{
    // Do something to warn the user here, e.g. a message box
    return;
}

double result = (parsedTextBox1 * 0.0333m * parsedTextBox2) + parsedTextBox1;
textBoxFind.Text = ((int) Math.Round(result)).ToString();
C #, текстовое поле, целое число, двойной, умножение,
Похожие вопросы