我尝试从函数返回$ true或$ false,然后我得到一个数组。 如果我删除listBox消息它按预期工作。有谁知道为什么?
function TestEmptyFields()
{
$empty= $false
$listBox1.Items.Add("Testing fields")
if ($txtPrtName.get_text()-eq "")
{
$listBox1.Items.Add("Empty name")
$empty= $true
}
elseif ($txtPrtIP.get_text() -eq "")
{
$listBox1.Items.Add("Empty Ip")
$empty= $true
}
else
{
$empty= $false
}
$listBox1.Items.Add($txtPrtName.get_text())
$listBox1.Items.Add($txtPrtIP.get_text())
return $empty
}
但它的工作原理如下:
function TestEmptyFields()
{
if($txtPrtName.get_text()-eq "")
{
return $true
}
elseif ($txtPrtIP.get_text() -eq "")
{
return $true
}
else
{
return $false
}
}
答案 0 :(得分:4)
在powershell return $empty
功能上等同于$empty ; return
- 这种行为的实施是为了让具有C风格语言背景的人更容易,但实际上你的回报超过了您认为!列表框也会返回内容。事实上,任何未分配给变量或其输出无效的内容都将到达输出流。要解决此问题,请尝试将列表框强制转换为[void]
,如下所示:
[void] $listBox1.Items.Add("Testing fields")
在表单的上下文中正确使用Listbox,查看TechNet guide可能不会有什么坏处。