繁体   English   中英

C# 进度条变色

[英]C# progress bar change color

我正在尝试更改进度条的颜色,我将其用作密码强度验证器。 例如,如果所需密码较弱,则进度条将变为黄色,如果为中等,则变为绿色。 强, 橙色. 非常强,红色。 就是这样。 这是我的密码强度验证器代码:

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(); 从您的应用程序。

你可以从这里找到很多例子

红色往往表示错误或麻烦——请重新考虑使用红色来表示“强密码”。

此外,由于您根据潜在的许多匹配项多次更新颜色,因此您的颜色不会像您希望的那样一致。

相反,给每个条件一个score ,然后根据总分选择你的颜色:

    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语句更容易。 (C/C++ 尤其容易出现错误的软件。)

我知道这篇文章很旧,但是我的 google foo 把我带到这里是为了寻找这个问题的答案,所以其他人也可能会在这里结束。

您可以告诉 windows不要将视觉效果 styles 应用到您的应用程序,从而允许您通过在代码开头输入以下行来更改进度条的颜色

[System.Windows.Forms.Application]::VisualStyleState = 0

有关可从 [System.Windows.Forms.Application] 使用的属性和方法的完整列表,请参阅文档https://learn.microsoft.com/en-us/do.net/api/system.windows.forms.application?查看=windowsdesktop-7.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM