C#/WPF 在 passwordBox 中取消屏蔽密码

Ben*_*ino 5 c# passwords wpf checkbox passwordbox

每当我单击复选框时,如何取消屏蔽和屏蔽密码框中的密码?我正在使用 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" />
Run Code Online (Sandbox Code Playgroud)

这是我的 .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 ?
    }
Run Code Online (Sandbox Code Playgroud)

或者在 WPF 中还有另一种方法吗?

Mar*_*cas 9

做到这一点非常简单。\n首先您应该PasswordChar在密码框中添加值:

\n\n
<PasswordBox Name="PasswordHidden" PasswordChar="\xe2\x80\xa2"/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
<TextBox Name="PasswordUnmask" Visibility="Hidden"/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
<TextBlock Name="ShowPassword"/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
<TextBlock x:Name="ShowPassword" Text="SHOW" PreviewMouseDown="ShowPassword_PreviewMouseDown" PreviewMouseUp="ShowPassword_PreviewMouseUp" MouseLeave="ShowPassword_MouseLeave"/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这些事件是PreviewMouseDown PreviewMouseUpMouseLeave但您可以根据您的情况选择适当的事件。

\n\n

现在,您需要在代码中编写函数:

\n\n
private void ShowPassword_PreviewMouseDown(object sender, MouseButtonEventArgs e) => ShowPasswordFunction();\nprivate void ShowPassword_PreviewMouseUp(object sender, MouseButtonEventArgs e) => HidePasswordFunction();\nprivate void ShowPassword_MouseLeave(object sender, MouseEventArgs e) => HidePasswordFunction();\n\nprivate void ShowPasswordFunction()\n{\n    ShowPassword.Text = "HIDE";\n    PasswordUnmask.Visibility = Visibility.Visible;\n    PasswordHidden.Visibility = Visibility.Hidden;\n    PasswordUnmask.Text = PasswordHidden.Password;\n}\n\nprivate void HidePasswordFunction()\n{\n    ShowPassword.Text = "SHOW";\n    PasswordUnmask.Visibility = Visibility.Hidden;\n    PasswordHidden.Visibility = Visibility.Visible;\n}\n
Run Code Online (Sandbox Code Playgroud)\n


Vir*_*012 3

以下链接将带您找到您正在寻找的答案,我的好先生。Lamas 先生在回答操作方法方面做得很好,所以我宁愿将您重定向到答案:)

在密码框的某些事件中显示密码字符

  • 那里的评论告诉我们这不再起作用了 (2认同)