7

Windows 窗体中的文本框曾经有一个 PasswordChar 属性。在 WPF 中有一个额外的控件:PasswordBox。这不是问题,但我的应用程序在仅触摸屏的设备上运行。不幸的是,密码框不支持屏幕键盘。我想知道是否有办法将密码字符功能添加到标准文本框中。

4

6 回答 6

4

这个答案可能会为您提供所需的东西。

于 2012-04-23T16:27:59.890 回答
2

我通过为密码内容创建两个属性并将它们绑定到相同的模型值来解决这个特殊问题。其中之一(可见的 UI 元素)绑定到密码。这个属性上的 Get 当然会返回一个字符数组来显示。必须使用密码文本的函数可以使用 PlainPassword 属性。

将“UpdateSourceTrigger=PropertyChanged”添加到文本框的绑定会导致字符在键入时出现在文本框中。

  public string Password
  {
     set
     {
        Model.Password = value;
        OnPropertyChanged("Password");
     }
     get 
     {
        return new String('●', Model.Password.Length); 
     }
  }

  public string PlainPassword
  {
     set
     {
        Model.Password = value;
        OnPropertyChanged("Password");
     }
     get { return Model.Password; }
  }
于 2014-08-17T19:14:58.727 回答
1

我相信您可以实现此目的的唯一方法是基于文本框创建自己的控件。然后只需将实际文本属性绑定到返回密码字符而不是实际密码的属性。然后您可以将密码作为依赖属性提取(尽管我听说这很不安全,这就是为什么它不是密码框中的依赖属性),或者只是一个常规属性并通过传递整个文本框对象来访问它.

于 2012-04-23T15:24:32.250 回答
1

混淆 a 中密码的一种简单方法TextBox是使用Webdings字体。

txtInput.FontFamily = new FontFamily("Webdings");

这并不完全安全,但在大多数情况下就足够了。请注意,它比 ,Webdings效果更好Wingdings,因为Wingdings它不覆盖小写字母并以大写形式返回所有内容。

于 2018-10-17T17:09:57.657 回答
0

你好!

我是新来的,但也许我可以帮助你。我发现这个-> 可以使用 WPF 和密码框

private void delete_Click(object sender, RoutedEventArgs e)
    {
    if (pass_passbox.IsFocused == true)
        {
            pass_passbox.Password= "";
        }
    }

如果它的文本框,你可以执行这个 pass_passbox.Text,但是当更改 WPF 密码框时,你需要编写 pass_passbox.Password 并且你可以从屏幕键盘进行更改。

未经过全面测试,但您可以通过这种方式重置

你可以像这样选择:

string Query = "Select * from [employeeinfo] where username='" + this.txt_user_name.Text + "' and password='" + this.pass_passbox.Password + "' ";

你可以看到 this.pass_passbox.Password 在文本框 this.pass_passbox.Text 是一样的

于 2015-02-05T15:01:32.250 回答
0
    private void txtBoxPassword_TextChanged(object sender, EventArgs e)
    {
        //password view protection//
        txtBoxPassword.UseSystemPasswordChar = true;
    }

这是一种启用用于向系统隐藏密码的 DEFAULT 字符的方法,如果您希望设置自己的密码字符,只需将事件函数中的实际行替换为以下内容:txtBoxPassword.PasswordChar='*'; //或任何其他字符

于 2019-02-27T03:42:41.280 回答