Reputation: 475
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
Reputation: 97
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
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
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
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
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