当我单击CheckBox时,Wpf PasswordBox必须显示字符

时间:2018-06-01 19:59:50

标签: c# wpf vb.net

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以了解发生的情况。

当我点击CheckBox时,PasswordBox如何显示 12345 的字符?

因此,需要修复以下行。

  

PasswordBox1.PasswordChar = CChar(“”)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我建议使用MahApps.Metro ...从nuget.org安装之后...您必须像xmlns:controls =“ http://metro.mahapps.com/winf这样将其导入到xaml的头部/ xaml / controls“

然后...将其样式用于您的PasswordBox控件

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

您甚至可以使用以下控件更改显示图标的内容:PasswordBoxHelper.RevealButtonContent附加属性