取消屏蔽密码文本框无效

时间:2016-10-03 10:45:08

标签: powershell-v4.0

我有以下代码来显示带有文本框和复选框的GUI:

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()

我在选中复选框时取消屏蔽字符,但我得到的例外是

  

无法转换价值" \ 0"输入" System.Char"。错误:"字符串必须正好一个字符。"

有人可以告诉我如何处理这个问题。

1 个答案:

答案 0 :(得分:1)

在PowerShell中,反斜杠不是转义字符,因此'\0'是一个字符串,带有字符反斜杠,后跟字符“0”(ASCII字符48)。要获取ASCII字符0,请将整数值0转换为char。

$password.PasswordChar = [char]0

只需指定一个整数值0也可以:

$password.PasswordChar = 0