Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C# Windows Forms (.Net Framework) значения ProgressBar ниже 0 и выше 100 выдают ошибку.

Valtend Ученик (123), на голосовании 6 месяцев назад
Написал игру РПГ где при атаке/лечении вносится урон и лечение в прогресс ProgressBar, и в том случае когда игрок/бот наносит урон так, что ХП опускается ниже 0, например -10, то тогда код выдаёт ошибку: " System.ArgumentOutOfRangeException: "Значение '-10' недопустимо для 'Value'. 'Value' должно лежать в диапазоне от 'minimum' до 'maximum'.
Имя параметра: Value" " , тоже самое если полечить то ХП может стать 110 и выйдет такая же ошибка.

Вопрос: как сделать чтоб собственно ошибки не было, и если значения progressbar становились <=0, то игрок/Бот умирал, а если лечился бы на значения больше 100 ( стало бы 110), то ХП бы упиралось в потолок в 100 очков.

Код в стиле
if (progressBar2.Value > 100)
{
progressBar2.Value = 100;
}
не работает
Голосование за лучший ответ
Шерлок Холмс Мыслитель (7135) 7 месяцев назад
Заворачивай присвоение Value в такую конструкцию
progressBar2.Value = Math.Max(0, Math.Min(100, твоя_формула_для_нового_Value))
Dmitry Оракул (62201) 7 месяцев назад
Зачем такие вычисления проводить напрямую с ProgressBar?
Используй отдельную переменную для этого

А после всех вычислений достаточно сделать так:
 if (health < 0)
progressBar.Value = 0;
else if (health > 100)
progressBar.Value = 100;
else
progressBar.Value = health;
Используй визуальные компоненты лишь для отображения, но не вычисления.
Похожие вопросы