Минимальное значение индикатора прогресса C # не обновляется из текстового поля - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь работать с индикатором выполнения в C # WFA.Мой код работает, но у меня есть проблема с минимальным значением индикатора выполнения.Это работает только когда я ввожу максимальное значение сначала не мин.Когда я сначала ввожу минимальное значение, оно начинается с 0 каждый раз, когда я не знаю почему.Есть идеи?

    private void textBoxWartosc_TextChanged(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(textBoxWartosc.Text))
        {

        }
        else
        if ((Convert.ToInt32(textBoxWartosc.Text)) >= (Convert.ToInt32(textBoxMin.Text)) && (Convert.ToInt32(textBoxWartosc.Text)) <= (Convert.ToInt32(textBoxMax.Text)))
        {
            int i = Convert.ToInt32(textBoxWartosc.Text);
            progressBar1.Value = i;
        }
    }


    private void textBoxMax_TextChanged(object sender, EventArgs e)
    {
        int i = Convert.ToInt32(textBoxMax.Text);
        progressBar1.Maximum = i;
    }

    private void textBoxMin_TextChanged(object sender, EventArgs e)
    {
        int i = Convert.ToInt32(textBoxMin.Text);
        progressBar1.Minimum = i;
    }

1 Ответ

0 голосов
/ 30 декабря 2018

Сначала давайте посмотрим, как ведет себя ProgressBar.Основное правило заключается в том, что минимум всегда будет меньше или равен максимума.Поэтому, если вы измените значение максимума на что-то меньшее минимального, вы тоже измените минимум.ясно?

Итак, я полагаю, что это так: сначала вы меняете минимум на что-то, скажем 120, у вас будет:

minumum = 120 , maximum = 120    // maximum also changes from 100 to 120 based on the rule

, затем вы пытаетесь ввести максимумскажем, 180, но событие TextChanged вызывается три раза.Во-первых, как только вы вставите "1", у вас будет:

minimum = 1 , maximum = 1    // minimum also changes because 1 is less than 100

Во-вторых, когда вы введете "8", теперь у вас будет:

minimum = 1 , maximum = 18   // now minimum stays 1

изатем, когда вы введете окончательный "0" и окончательная ситуация будет такой:

minimum = 1 , maximum = 180

Есть много способов решить эту проблему, но я предлагаю

1: вы используете Leave событие вместо TextChanged

или 2: поместите туда кнопку Save и изменяйте значения только при нажатии кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...