WPF 密码框必须在我单击复选框时显示字符



xaml

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<StackPanel VerticalAlignment="Center" Width="300">
<PasswordBox x:Name="PasswordBox1" Height="30" PasswordChar="*" Password="12345"/>
<CheckBox x:Name="CheckBox1" Content="Show Password"/>
</StackPanel>
</Window>

vb.net

Class MainWindow 
Private Sub CheckBox1_Checked(sender As Object, e As RoutedEventArgs) Handles CheckBox1.Checked
PasswordBox1.PasswordChar = CChar("")
End Sub
Private Sub CheckBox1_Unchecked(sender As Object, e As RoutedEventArgs) Handles CheckBox1.Unchecked
PasswordBox1.PasswordChar = CChar("*")
End Sub
End Class

运行上述代码并单击CheckBox1以了解正在发生的事情。

当我单击复选框时,密码框如何显示12345个字符?

因此,以下线路需要修复。

密码

框1.密码字符 = CChar(" "(

这将适用于您正在寻找的内容,尽管它会在内存中暴露您的密码。我们在 UI 上的同一位置有一个文本框和一个密码框,当用户选中"显示密码"复选框时,我们会折叠密码框并显示隐藏的文本框,同时更新文本。发送密码时,您需要检查是否正在使用可见 UI 控件中的密码。

Xaml 代码:

<StackPanel Orientation="Horizontal">
<Grid Width="300" Height="40">
<PasswordBox Name="passwordBox" PasswordChar="*" />
<TextBox Name="passwordTxtBox" Visibility="Collapsed" />
</Grid>
<CheckBox Margin="10" Name="showPassword" Unchecked="ShowPassword_Unchecked"  Checked="ShowPassword_Checked" />
</StackPanel>

代码隐藏:

private void ShowPassword_Checked(object sender, RoutedEventArgs e)
{
passwordTxtBox.Text = passwordBox.Password;
passwordBox.Visibility = Visibility.Collapsed;
passwordTxtBox.Visibility = Visibility.Visible;
}
private void ShowPassword_Unchecked(object sender, RoutedEventArgs e)
{
passwordBox.Password = passwordTxtBox.Text;
passwordTxtBox.Visibility = Visibility.Collapsed;
passwordBox.Visibility = Visibility.Visible;
}

我建议使用MahApps.Metro ...从 nuget.org 安装后...您必须像这样将其导入 XAML 的头部 XMLNS:控件="http://metro.mahapps.com/winf/xaml/controls">

然后。。。只需将其样式用于您的密码框控件

<PasswordBox  Style="{StaticResource MetroButtonRevealedPasswordBox}" />

您甚至可以使用控件更改显示图标的内容:密码框助手。显示按钮内容附加属性

最新更新