我有以下代码来显示带有文本框和复选框的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"。错误:"字符串必须正好一个字符。"
有人可以告诉我如何处理这个问题。
答案 0 :(得分:1)
在PowerShell中,反斜杠不是转义字符,因此'\0'
是一个字符串,带有字符反斜杠,后跟字符“0”(ASCII字符48)。要获取ASCII字符0,请将整数值0转换为char。
$password.PasswordChar = [char]0
只需指定一个整数值0也可以:
$password.PasswordChar = 0