[英]A good way to show password in PasswordBox
我不知道有人知道如何在 PasswordBox 中顯示密碼。 讀過您可以將文本框綁定到密碼框,但這不是另一種方法嗎?
如果您希望密碼可見,則應使用文本框。 密碼框的唯一功能是屏蔽輸入。 它不提供額外的功能。 它還可以在運行時切換文本框和密碼框
在PasswordBox控件中沒有任何內置屬性來顯示密碼字符。 但我們可以通過TextBox控件在PasswordBox中顯示Password。 對於在WPF中具有顯示/隱藏功能的PasswordBox。 我們將使用兩個TextBlock控件,TextBox控件,PasswordBox控件,Image控件
<Grid>
<TextBlock Text="Welcome
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.