2011-11-07 31 views
8

Sto provando a cambiare il colore della mia barra di avanzamento, lo sto usando come validatore della forza della password. Ad esempio, se la password desiderata è debole, la barra di avanzamento diventa gialla, se media, quindi verde. Forte, arancione Molto forte, rosso. È solo qualcosa del genere. Ecco il mio codice per il validatore sicurezza della password:Barra di avanzamento C# cambia colore

using System.Text.RegularExpressions; 
using System.Drawing; 
using System.Drawing.Drawing2D; 

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, @"[[email protected]#\$%\^&\*\?_~\-\(\);\.\+:]+")) 
     pgbPass.ForeColor = Color.Red; 

Il pgbPass.ForeColor = Color.ColorHere non sembra funzionare. Qualsiasi aiuto? Grazie.

+2

Ar e stai usando WinForms, ASP.NET, WPF, Silverlight? –

+0

Windows Form, WPF, ecc.? – MoonKnight

+0

Se lo si imposta manualmente, e non con questo metodo, funziona? – John

risposta

20

Il colore della barra di avanzamento non può essere modificato in C# a meno che gli stili di visualizzazione siano disabilitati. Anche se l'IDE offre di cambiare il colore, non si osserverà alcun cambiamento di colore poiché la barra di avanzamento riprende lo stile visivo del sistema operativo corrente. Puoi scegliere di disattivare lo stile visivo per l'intera applicazione. Per fare ciò vai alla classe iniziale del programma e rimuovi questa riga dal codice

Application.EnableVisualStyles(); 

o utilizzare qualche progresso personalizzato barra di controllo come questo http://www.codeproject.com/KB/cpp/colorprogressbar.aspx

+0

Nota 1: rimuoverà anche gli stili visivi da tutti gli altri controlli (ad esempio TextBox, Button). Nota 2: La domanda riguarda WinForms. – hfrmobile

2

Red tende a indicare gli errori o problemi - si prega di riconsiderare con rosso per indicare "password sicura".

Inoltre, poiché si aggiorna il colore molte volte in base a potenzialmente molte corrispondenze, i colori non saranno coerenti come si desidera.

Invece, dare ciascuna delle condizioni un punteggio, e poi scegliere il vostro colore in base al punteggio totale:

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, @"[[email protected]#\$%\^&\*\?_~\-\(\);\.\+:]+")) 
     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; 
    } 

Nota l'uso di un else-if costrutto che a volte è più facile che il linguaggio fornito switch o case dichiarazione. (Il C/C++ in particolare è incline al software buggy.)

+1

Questa non risponde alla domanda iniziale su ProgressBar. – hfrmobile

Problemi correlati