【发布时间】:2022-01-14 13:59:00
【问题描述】:
我正在尝试在 Powershell 中创建一个表单。它包含一个 ComboBox 下拉选项,我将其用作必填字段。在选择一个选项之前,继续按钮将被禁用。这是 ComboBox 和按钮启用的代码:
$TSTypeBox.Name = "TSType"
$TSTypeBox.Location = New-Object System.Drawing.Point(116,100)
$TSTypeBox.Size = New-Object System.Drawing.Size(145,20)
$TSTypeBox.add_MouseHover($ShowHelp)
$TSTypeBox.DropDownStyle = "DropDownList"
Foreach ($item in ("1","2","3","4","5")) {
$TSTypeBox.Items.Add($item) | Out-Null
}
$TSTypeBox.SelectedItem = $TSLocation
$handler_TSTypeBox_SelectedIndexChanged= {
If (($TSTypeBox.Text) -and ($ComputerNameBox.Text))
{
$OKButton.Enabled = 1
}
Else
{
$OKButton.Enabled = 0
}
}
$TSTypeBox.add_SelectedIndexChanged($handler_TSTypeBox_SelectedIndexChanged)
这段代码特别能按预期工作,所以我不担心。我在这里是关于我包含的$TSTypeBox.SelectedItem = $TSLocation 行。我在其他地方有代码可以提取正在运行程序的计算机的 IP 地址,然后将其与 if/elseif/else 语句进行匹配,以确定计算机属于1 还是2,这是选项您可以看到已在上面的代码中添加到 ComboBox 中。
if/else 语句更新了$TSLocation 变量,然后我使用该变量来强制选择组合框中的下拉选项之一。这也有效,但不幸的是它没有像我想要的那样启用继续按钮。我很难查找有关此的问题,因为它非常特殊,而且我可能做错了(我对 Powershell 脚本编写的经验很少)。如果您对此有任何其他问题,请告诉我。谢谢!
【问题讨论】:
-
您是否尝试过将“启用”设置为布尔值? $OKButton.Enabled = $false 等?
-
您也许还可以在设置启用后运行:[System.Windows.Forms.Application]::DoEvents(),但我不确定是否有必要......
-
更改 $TSLocation 时如何强制选择?如果您粘贴一个最小的工作示例脚本会更容易吗?
-
@Sceptalist 对不起,我想我在帖子的前面没有说清楚。我使用第一段中的代码行“强制”选择,$TSTypeBox.SelectedItem = $TSLocation $TSLocation 变量仅在程序首次运行时更改一次。
-
我怀疑这与范围界定或您选择所选项目的方式有关,但如果没有脚本的工作示例,很难说。
标签: powershell variables combobox scripting