Красный имеет тенденцию указывать на ошибки или проблемы - пожалуйста, пересмотрите использование красного для обозначения «надежного пароля».
Кроме того, поскольку вы обновляете цвет много раз на основе потенциально большого количества совпадений, ваши цвета выигралине будет настолько последовательным, как хотелось бы.
Вместо этого присвойте каждому из условий балл , а затем выберите свой цвет на основе общего балла:
int score = 0;
if (txtPass.Text.Length < 4)
score += 1;
if (txtPass.Text.Length >= 6)
score += 4;
if (txtPass.Text.Length >= 12)
score += 5;
if (Regex.IsMatch(PassChar, @"[a-z]") && Regex.IsMatch(PassChar, @"[A-Z]"))
score += 2;
if (Regex.IsMatch(PassChar, @"[!@#\$%\^&\*\?_~\-\(\);\.\+:]+"))
score += 3;
if (score < 2) {
color = Color.Red;
} else if (score < 6) {
color = Color.Yellow;
} else if (score < 12) {
color = Color.YellowGreen;
} else {
color = Color.Green;
}
Обратите внимание на использование конструкции else-if , которая иногда проще, чем предоставленная языком switch
или case
инструкция.(В частности, C / C ++ подвержен ошибкам программного обеспечения.)