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#进度条改变颜色

进度条的颜色不能在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结构的使用,有时比语言提供的switchcase语句更容易。

我知道这篇文章很老了,但是我的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