2016-10-03 5 views
0

У меня есть следующий код для отображения графического интерфейса с текстовым полем и флажком:разоблачать Пароль текстового поля не работает

Add-Type -Assembly 'System.Windows.Forms' 

$form = New-Object Windows.Forms.Form 

$password = New-Object Windows.Forms.MaskedTextBox 
$password.PasswordChar = '*' 
$form.Controls.Add($password) 

$checkBox2 = New-Object System.Windows.Forms.CheckBox 
$checkBox2.add_click($handler_button1_Click) 
$form.Controls.Add($checkBox2) 

$handler_button1_Click = { 
    if ($checkBox2.Checked) {  
     $password.PasswordChar = '\0' // [char]\0 tried this too 
    } else { 
     $password.PasswordChar = '*' 
    } 
} 

$form.ShowDialog() 

Я разоблачая символы, когда флажок был проверен, но я получаю исключение, как

Cannot convert value "\0" to type "System.Char". Error: "String must be exactly one character long."

Так может кто-нибудь дать мне знать, как я могу справиться с этим.

ответ

1

В PowerShell обратная косая черта не является символом escape, поэтому '\0' - это строка с буквальным обратным слэшем, за которым следует символ «0» (символ ASCII 48). Чтобы получить символ ASCII 0, введите целочисленное значение 0 в символ.

$password.PasswordChar = [char]0 

Просто назначая целое значение 0 будет работать тоже:

$password.PasswordChar = 0 
+0

Спасибо 'Ansgar Wiechers' – Dotnet