Winforms Powershell Windows窗体列表框选择验证

Winforms Powershell Windows窗体列表框选择验证,winforms,powershell,listbox,error-checking,Winforms,Powershell,Listbox,Error Checking,我已经使用包含列表框的windows窗体创建了一个powershell脚本来运行cmd命令(有助于消除用户错误并稍微加快进程)。我遇到的唯一问题是,即使在我已填充的表单之一上未选择某个项,该命令仍将尝试运行。这可能导致脚本无法运行,也可能导致大量数据被下载(脚本从服务器提取日志文件,列表框有助于缩小要提取的数据范围)。是否有一种方法可以为列表框创建错误检查,该列表框在继续之前基本上会说“嘿,你没有选择任何东西!”? 谢谢 编辑(第一个列表框的示例): 可能有一种方法可以使用Windows窗体方法

我已经使用包含列表框的windows窗体创建了一个powershell脚本来运行cmd命令(有助于消除用户错误并稍微加快进程)。我遇到的唯一问题是,即使在我已填充的表单之一上未选择某个项,该命令仍将尝试运行。这可能导致脚本无法运行,也可能导致大量数据被下载(脚本从服务器提取日志文件,列表框有助于缩小要提取的数据范围)。是否有一种方法可以为列表框创建错误检查,该列表框在继续之前基本上会说“嘿,你没有选择任何东西!”? 谢谢

编辑(第一个列表框的示例):


可能有一种方法可以使用Windows窗体方法执行此类验证,但它使用PowerShell


Do..中执行
$result=$form.ShowDialog()
,直到
Do..,同时
循环并继续显示对话框,直到用户选择了至少一个项目,并按下
OK
-或用户退出对话框-否则,显示警告并再次显示对话框。
以下是相关的PowerShell代码:

do
{
    $result = $form.ShowDialog()

    if ($ListBox.SelectedIndices.Count -lt 1 -and $result -eq [System.Windows.Forms.DialogResult]::OK)
    {
        Write-Warning 'Nothing was selected, please select a server.'
    }
}
until (($result -eq [System.Windows.Forms.DialogResult]::OK -and $listBox.SelectedIndices.Count -ge 1) -or $result -ne [System.Windows.Forms.DialogResult]::OK)
当然,您可以将
Write Warning
替换为您想要的任何内容,例如消息框


PS:您可以使用
AddRange
方法将项目数组添加到
$listBox
集合中,如下所示:
[void]$listBox.items.AddRange(@(“server1”、“server2”、“server3”))

请提供。添加了列表框示例。如果你需要更多,请告诉我。这是三种形式的第一种。前两个是列表框,第三个是用户输入的文本(实际搜索词)。如果用户没有从该列表中选择服务器,脚本将其用作通配符,这将返回太多的数据。如果他们在选择某个项目之前尝试单击“确定”,我希望验证/错误检查显示“选择某个项目”。您可以选中
$listBox.SelectedIndex-gt-1
,以确保选中某个项目。今天将对此进行测试!非常感谢你的帮助!
do
{
    $result = $form.ShowDialog()

    if ($ListBox.SelectedIndices.Count -lt 1 -and $result -eq [System.Windows.Forms.DialogResult]::OK)
    {
        Write-Warning 'Nothing was selected, please select a server.'
    }
}
until (($result -eq [System.Windows.Forms.DialogResult]::OK -and $listBox.SelectedIndices.Count -ge 1) -or $result -ne [System.Windows.Forms.DialogResult]::OK)