簡體   English   中英

在 PasswordBox 中顯示密碼的好方法

[英]A good way to show password in PasswordBox

我不知道有人知道如何在 PasswordBox 中顯示密碼。 讀過您可以將文本框綁定到密碼框,但這不是另一種方法嗎?

如果您希望密碼可見,則應使用文本框。 密碼框的唯一功能是屏蔽輸入。 它不提供額外的功能。 它還可以在運行時切換文本框和密碼框

在PasswordBox控件中沒有任何內置屬性來顯示密碼字符。 但我們可以通過TextBox控件在PasswordBox中顯示Password。 對於在WPF中具有顯示/隱藏功能的PasswordBox。 我們將使用兩個TextBlock控件,TextBox控件,PasswordBox控件,Image控件

XAML

<Grid>
    <TextBlock Text="Welcome&#xa;To see the Password"
               FontSize="28"
               FontWeight="Bold"
               HorizontalAlignment="Center"
               VerticalAlignment="Top"
               TextAlignment="Center"
               Margin="0,30,0,0" />
    <TextBlock Text="Enter your password"
               FontSize="20"
               HorizontalAlignment="Left"
               Margin="112,160,0,0"
               VerticalAlignment="Top" />
    <TextBox Height="40"
             FontSize="20"
             Padding="5,2,47,0"
             HorizontalAlignment="Left"
             Margin="112,193,0,0"
             Name="txtVisiblePasswordbox"
             VerticalAlignment="Top"
             Width="274" />
    <PasswordBox Height="40"
                 FontSize="20"
                 Padding="5,2,47,0" 
                 HorizontalAlignment="Left"
                 Margin="112,193,0,0"
                 Name="txtPasswordbox"
                 VerticalAlignment="Top"
                 Width="274"
                 PasswordChanged="txtPasswordbox_PasswordChanged" />
    <Image Visibility="Hidden"
           Height="30"
           HorizontalAlignment="Left"
           Name="ImgShowHide"
           Stretch="Fill"
           VerticalAlignment="Top"
           Width="30"
           Margin="351,198,0,0"
           MouseLeave="ImgShowHide_MouseLeave"
           PreviewMouseDown="ImgShowHide_PreviewMouseDown"
           PreviewMouseUp="ImgShowHide_PreviewMouseUp" />
</Grid>

代碼背后

string AppPath = Directory.GetCurrentDirectory();
public MainWindow()
{
    InitializeComponent();
    ImgShowHide.Source = new BitmapImage(new Uri(AppPath + "\\img\\clip.jpg"));
}
private void ImgShowHide_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
    HidePassword();
}

private void ImgShowHide_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    ShowPassword();
}
private void ImgShowHide_MouseLeave(object sender, MouseEventArgs e)
{
    HidePassword();
}
private void txtPasswordbox_PasswordChanged(object sender, RoutedEventArgs e)
{
    if(txtPasswordbox.Password.Length > 0)
        ImgShowHide.Visibility = Visibility.Visible;
    else
        ImgShowHide.Visibility = Visibility.Hidden;
}

void ShowPassword()
{
    ImgShowHide.Source = new BitmapImage(new Uri(AppPath + "\\img\\cus.jpg"));
    txtVisiblePasswordbox.Visibility = Visibility.Visible;
    txtPasswordbox.Visibility = Visibility.Hidden;
    txtVisiblePasswordbox.Text = txtPasswordbox.Password;
}
void HidePassword()
{
    ImgShowHide.Source = new BitmapImage(new Uri(AppPath + "\\img\\clip.jpg"));
    txtVisiblePasswordbox.Visibility = Visibility.Hidden;
    txtPasswordbox.Visibility = Visibility.Visible;
    txtPasswordbox.Focus();
}

這是一個簡單易行的方法,您可以從此處下載密碼字體,並在文本框中將其用作字體而不是密碼框,只要您想顯示密碼,您只需將 fonts 從“密碼”切換到“Microsoft Sans Serif”或任何東西 // 例如,當我單擊復選框時:

Private Sub ChkShowPass_Click(sender As Object, e As RoutedEventArgs)
    If ChkShowPass.IsChecked = True Then
        'show Password
        TxtPassword.FontFamily = New FontFamily("Microsoft Sans Serif")
    ElseIf ChkShowPass.IsChecked = False Then
        'hide Password
        TxtPassword.FontFamily = New FontFamily("Password")
    End If
End Sub

希望這會對你有所幫助,並幫助許多程序員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM