c#进度条改变颜色
本文关键字:改变 变颜色 | 更新日期: 2023-09-27 18:13:37
我试图改变我的进度条的颜色,我使用它作为密码强度验证器。例如,如果所需的密码较弱,则进度条将变为黄色,如果为中等,则为绿色。强,橙色。非常强烈,红色的。就像这样。以下是我的密码强度验证器代码:
var PassChar = txtPass.Text;
if (txtPass.Text.Length < 4)
pgbPass.ForeColor = Color.White;
if (txtPass.Text.Length >= 6)
pgbPass.ForeColor = Color.Yellow;
if (txtPass.Text.Length >= 12)
pgbPass.ForeColor = Color.YellowGreen;
if (Regex.IsMatch(PassChar, @"'d+"))
pgbPass.ForeColor = Color.Green;
if (Regex.IsMatch(PassChar, @"[a-z]") && Regex.IsMatch(PassChar, @"[A-Z]"))
pgbPass.ForeColor = Color.Orange;
if (Regex.IsMatch(PassChar, @"[!@#'$%'^&'*'?_~'-'(');'.'+:]+"))
pgbPass.ForeColor = Color.Red;
pgbPass.ForeColor = Color.ColorHere
似乎不工作。任何帮助吗?谢谢。
进度条的颜色不能在c#中更改,除非视觉样式被禁用。尽管IDE提供了更改颜色的功能,但您将不会看到进度条的颜色发生变化,因为进度条将采用当前操作系统的视觉风格。您可以选择禁用整个应用程序的视觉样式。要做到这一点,转到程序的起始类,并从代码
中删除这一行 Application.EnableVisualStyles();
或使用像这样的自定义进度条控件http://www.codeproject.com/KB/cpp/colorprogressbar.aspx
查找并删除应用程序中的Application.EnableVisualStyles();
你可以从这里找到很多例子
红色往往表示错误或麻烦——请重新考虑使用红色表示"强密码"
而且,因为你基于可能有很多匹配而更新了很多次颜色,所以你的颜色不会像你想的那样一致。
相反,给每个条件一个分数,然后根据总分选择颜色:
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
语句更容易。
我知道这篇文章很老了,但是我的google foo把我带到这里来寻找这个问题的答案,所以其他人可能也会在这里结束。
你可以告诉windows NOT将视觉样式应用到你的应用程序中,允许你通过在代码开头输入以下行来改变进度条的颜色
[System.Windows.Forms.Application]::VisualStyleState = 0
查看可以从[System.Windows.Forms. js]中使用的属性和方法的完整列表。应用程序]参见文档https://learn.microsoft.com/en us/dotnet/api/system.windows.forms.application?view=windowsdesktop - 7.0