TheJoKr Channel Ответов: 3

Как запретить пользователям использовать строки в текстовом поле?


<pre lang="c#"><pre lang="c#">
void BMR()
{
    int bmr = 0;
    double weight = Convert.ToInt32(tbWeight.Text);
    double height = Convert.ToInt32(tbHeight.Text);
    double age = Convert.ToInt32(tBAge.Text);
    if (rBMan.Checked)
    {
        bmr = Convert.ToInt32(66.47 + (13.75 * weight) + (5.003 * height) - (6.755 * age));
        lblBMR.Text = lblBMR.Text + bmr;
    }
    else if(rBWoman.Checked)
    {
        bmr = Convert.ToInt32(655.1 + (9.563 * weight) + (1.85 * height) - (4.676 * age));
        lblBMR.Text = lblBMR.Text + bmr;
    }
    else
    {
        MessageBox.Show("Select your Gender first", "Error",MessageBoxButtons.OK, MessageBoxIcon.Error );
    }
}


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

Я хочу, чтобы программа принимала только двойные значения, потому что строки просто ломают ее. Заранее благодарю вас за помощь!

3 Ответов

Рейтинг:
28

Maciej Los

5ed!

Рейтинг:
2

OriginalGriff

Лучше всего использовать элемент управления NumericUpDown вместо текстового поля: тогда значение всегда будет числовым и всегда допустимым / в диапазоне.


Richard MacCutchan

Для двойников?

OriginalGriff

Весь его код показывает конвертацию.ToInt32

Richard MacCutchan

Ха-ха, я пропустил это. Поэтому я задаюсь вопросом, почему он хочет двойных ценностей?

Рейтинг:
0

Richard Deeming

Двойной.Метод TryParse (Система) | Microsoft Docs[^]

void BMR()
{
    if (!double.TryParse(tbWeight.Text, out var weight))
    {
        MessageBox.Show("Enter a valid weight", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
    if (!double.TryParse(tbHeight.Text, out var height))
    {
        MessageBox.Show("Enter a valid height", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
    if (!double.TryParse(tBAge.Text, out var age))
    {
        MessageBox.Show("Enter a valid age", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }

    int bmr = 0;
    if (rBMan.Checked)
    {
        bmr = Convert.ToInt32(66.47 + (13.75 * weight) + (5.003 * height) - (6.755 * age));
        lblBMR.Text = lblBMR.Text + bmr;
    }
    else if(rBWoman.Checked)
    {
        bmr = Convert.ToInt32(655.1 + (9.563 * weight) + (1.85 * height) - (4.676 * age));
        lblBMR.Text = lblBMR.Text + bmr;
    }
    else
    {
        MessageBox.Show("Select your Gender first", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}


Maciej Los

5ed!