текстовое поле текст устанавливает себя в нулевую строку - PullRequest
0 голосов
/ 25 января 2020
public Form1()
{
    InitializeComponent();
    powerTextBox.Text = "0";
    torqueTextBox.Text = "0";
    rpmTextBox.Text = "0";
}

private void powerTextBox_TextChanged(object sender, EventArgs e)
{
    power = Convert.ToDouble(powerTextBox.Text);

    rpm = Convert.ToDouble(rpmTextBox.Text);

    torque = power / rpm * 9550;
    torqueTextBox.Text = Convert.ToString(torque);
}

Когда я запускаю это, я получаю ошибку, которая говорит, что rpmTextBox.Text не может быть преобразован из-за неправильного формата, и в отладчике он показывает rpmTextBox.Text = "". Я назначаю 0 в качестве строки для него внутри инициализации, но он устанавливает его в нулевую строку.

Любое предложение? Спасибо.

1 Ответ

0 голосов
/ 25 января 2020

Вы можете использовать Double.TryParse метод. Также помните, что число об / мин не должно равняться 0 (в противном случае вы получите DivideByZeroException ):

public Form1()
{
    InitializeComponent();
    powerTextBox.Text = "0";
    torqueTextBox.Text = "0";
    rpmTextBox.Text = "0";
}

private void powerTextBox_TextChanged(object sender, EventArgs e)
{
    if(Double.TryParse(powerTextBox.Text, out double power)
       && Double.TryParse(rpmTextBox.Text, out double rpm))
    {
       if(rpm != 0)
       {
          torque = power / rpm * 9550;
          torqueTextBox.Text = Convert.ToString(torque);
       }
    }
    else
    {
       //Handle invalid inputs
       torqueTextBox.Text = "Wrong power or rpm";
    }
}
...