2015-05-08 38 views
2

我有一類叫做PasswordValidationRules如何更改Passwordbox的背景色爲WPF/C#

這是一個簡單的類

public bool validatePasswordRules(String text) 
    { 
     Regex regex = new Regex(@"^(?=.{8}$)(?=.*[A-Z])(?=.*[0-9])(?=.*[,@#$])"); 
     bool isValid = regex.IsMatch(text); 
     if (isValid) 
     { 
      return true; 
     } 
     else 
     {     
      return false; 
     } 
    } 

我要檢查的規則,用戶類型爲PasswordBox 。

我希望只有當輸入8個字符時觸發它,如果是「true」,背景將變爲綠色,否則它應該有紅色背景。

+0

所以你想要它少於8個字符的紅色,或者只是8個字符,然後是紅色或綠色? –

回答

1

我幾乎不知道WPF,但我會做這樣一來,

首先爲String

public static class Validate 
{ 
    public static bool ValidatePassword(this String password) 
    { 
     Regex regex = new Regex(@"^(?=.{8}$)(?=.*[A-Z])(?=.*[0-9])(?=.*[,@#$])"); 
     bool isValid = regex.IsMatch(password); 
     if (isValid) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

然後在PasswordChanged事件PasswordBox的密碼驗證擴展,

private void text_PasswordChanged(object sender, RoutedEventArgs e) 
{ 
    if (text.Password.Length >= 8) 
    { 
     if (text.Password.ValidatePassword()) 
     { 
     text.Background = new SolidColorBrush(Color.FromRgb(0, 255, 0)); 
     } 
     else 
     text.Background = new SolidColorBrush(Color.FromRgb(255, 0, 0)); 
    } 
    else 
     text.Background = SystemColors.WindowBrush; 
} 
+0

我喜歡你的代碼,但無論如何,沒有單擊按鈕的事件? –

+0

@softwareisfun,事件是'PasswordChanged',當你在'PasswordBox'中輸入時會引發它。 'XAML'看起來像這樣:''' –

0

通過閱讀你的問題,我認爲你應該嘗試在C# 採取pictu如果長度小於8個字符,則將圖片框的背景顏色更改爲紅色,如果其> = 8,則將顏色更改爲綠色,以下是代碼示例:

  if (textBox1.Text == "") 
     { 
      pictureBox1.BackColor = Color.Transparent; 
     } 
     else if (textBox1.Text.Length >= 8) 
     { 
      pictureBox1.BackColor = Color.Green; 
     } 
     else if (textBox1.Text.Length < 8) 
     { 
      pictureBox1.BackColor = Color.Red; 
     } 

使用此代碼驗證您的密碼文本框的事件,並將textbox1的名稱更改爲您的文本框名稱 希望這可以幫助您解決您的問題。

+0

它是一個PasswordBox。不是一個文本框 –

0

這是一個充當密碼框的文本框,它使用密碼字符,並且此代碼位於c#中,使用該文本框並將其屬性更改爲密碼字符並定義密碼字符,以便顯示該字符而不是文本,所以它使用作爲通行證,因爲在WPF

0

我用這個作爲驗證事件,所以當按下標籤它改變顏色,但如果你想你可以在按鈕事件內使用它,它將工作相同,當你按下按鈕時,它將驗證密碼框的長度,如果超過8則會將顏色更改爲綠色。