David
David

Reputation: 475

TextBox Password Char

the textbox in Windows Forms used to have a PasswordChar property. In WPF there is an extra control for that: PasswordBox. This wouldn't be a problem but my application runs on an touchscreen only device. Unfortunately the password box does not support the on screen keyboard. I was wondering if there is a way of adding the password char feature to the standard textbox.

Upvotes: 9

Views: 16168

Answers (6)

    private void txtBoxPassword_TextChanged(object sender, EventArgs e)
    {
        //password view protection//
        txtBoxPassword.UseSystemPasswordChar = true;
    }

That's a way to enable the DEFAULT character used for hiding the password from the system,if you wish to set your own password char just substitute the actual line inside the event function with the following: txtBoxPassword.PasswordChar='*'; //or any other character

Upvotes: 0

Olivier Jacot-Descombes
Olivier Jacot-Descombes

Reputation: 112712

A simple way to obfuscate the password in a TextBox is to use the Webdings font.

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

This is not completely safe, but sufficient in most cases. Note that Webdings works better than Wingdings, because Wingdings does not cover the lower case letters and returns everything in upper case.

Upvotes: 1

mandi arnold
mandi arnold

Reputation: 11

helló!

im new here but maybe i can help u. i find this -> can be work whit WPF and passwordbox

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

ofc u do this pass_passbox.Text if its textbox but when change WPF passwordbox u need to write can pass_passbox.Password and u can do changes from screen keyboard .

not fully tested but u can reset this way

and u can do select like this:

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

u can see this.pass_passbox.Password is the same at textbox this.pass_passbox.Text

Upvotes: 0

Park
Park

Reputation: 146

I made my way around this particular problem by creating two Properties for the Password content and binding both of them to the same Model value. One of them (the visible UI Element) binds to Password. The Get on this property of course then returns an array of characters for display. The functions that must use the password text can use the PlainPassword Property.

Adding "UpdateSourceTrigger=PropertyChanged" to the Binding for the textbox causes the characters to appear in the text box as they are typed.

  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; }
  }

Upvotes: 2

Stewbob
Stewbob

Reputation: 16899

This answer may provide you with what you need.

Upvotes: 4

Kevin DiTraglia
Kevin DiTraglia

Reputation: 26078

I believe the only way you can achieve this is to create your own control based on textbox. Then just bind the actual text property to a property that returns your password character rather than the actual password. Then you can pull the password as a dependency property (though I've heard this is rather insecure, which is why it is not a dependency property in the password box), or just a regular property and access it by passing the whole textbox object.

Upvotes: 1

Related Questions