我想知道是否有好的方法来显示PasswordBox中的密码。已经了解到可以将文本框绑定到PasswordBox,但是否有其他方法。
我想知道是否有好的方法来显示PasswordBox中的密码。已经了解到可以将文本框绑定到PasswordBox,但是否有其他方法。
这里有一个好的简单方法,您可以从这里下载密码字体,并在文本框中使用它作为字体,而不是密码框。每当您想显示密码时,您只需要将字体从“密码”切换到“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
在PasswordBox控件中,没有任何内置属性可以显示密码字符。但是我们可以通过TextBox控件来显示PasswordBox中的密码。对于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();
}