C# / WPF 取消密码框内的密码掩码

2023-12-06

每当我单击复选框时,如何解密和隐藏密码框中的密码?我正在使用 C# WPF 模板。

这是我的 .XAML 代码:

<PasswordBox x:Name="passwordBox_password" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" Margin="5" Height="25" />
        <CheckBox x:Name="checkBox_showPassword" Grid.Row="3" Grid.Column="1" Margin="5,0,5,5" Content="show password" Checked="checkBox_showPassword_Checked" Unchecked="checkBox_showPassword_Unchecked" />

这是我的 .CS 代码:

private void checkBox_showPassword_Checked(object sender, RoutedEventArgs e)
    {
        // what to do here ?
    }

    private void checkBox_showPassword_Unchecked(object sender, RoutedEventArgs e)
    {
        // what to do here ?
    }

或者在 WPF 中还有其他方法吗?


这样做非常简单。 首先你应该添加值PasswordChar在您的密码框中:

<PasswordBox Name="PasswordHidden" PasswordChar="•"/>

接下来,在密码框标签下,您应该添加一个文本框Visibility值设置为隐藏:

<TextBox Name="PasswordUnmask" Visibility="Hidden"/>

以及显示/隐藏密码的触发器,例如简单的文本或按钮。就我而言,我使用的是简单的文本。

<TextBlock Name="ShowPassword"/>

接下来,您需要在触发元素中添加 3 个不同的事件,例如(这对 TextBlock 或 Image 有效,如果您想使用 Button,则应该选择其他事件):

<TextBlock x:Name="ShowPassword" Text="SHOW" PreviewMouseDown="ShowPassword_PreviewMouseDown" PreviewMouseUp="ShowPassword_PreviewMouseUp" MouseLeave="ShowPassword_MouseLeave"/>

事件是PreviewMouseDown PreviewMouseUp and MouseLeave但您可以根据您的情况选择合适的活动。

现在,您需要在代码中对函数进行编程:

private void ShowPassword_PreviewMouseDown(object sender, MouseButtonEventArgs e) => ShowPasswordFunction();
private void ShowPassword_PreviewMouseUp(object sender, MouseButtonEventArgs e) => HidePasswordFunction();
private void ShowPassword_MouseLeave(object sender, MouseEventArgs e) => HidePasswordFunction();

private void ShowPasswordFunction()
{
    ShowPassword.Text = "HIDE";
    PasswordUnmask.Visibility = Visibility.Visible;
    PasswordHidden.Visibility = Visibility.Hidden;
    PasswordUnmask.Text = PasswordHidden.Password;
}

private void HidePasswordFunction()
{
    ShowPassword.Text = "SHOW";
    PasswordUnmask.Visibility = Visibility.Hidden;
    PasswordHidden.Visibility = Visibility.Visible;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# / WPF 取消密码框内的密码掩码 的相关文章

随机推荐