gpt4 book ai didi

Powershell CheckedListBox 检查是否在字符串/数组中

转载 作者:行者123 更新时间:2023-12-03 00:02:32 25 4
gpt4 key购买 nike

我已经开始学习 Powershell,在花了几个小时解决一个问题后,我现在陷入了困境,我可以找到除 Powershell 以外的多种语言的解决方案。

我需要检查 CheckedListBox 中的每个项目,这些项目与名为 $MLBSVar_SelectedPackages 的分号分隔字符串中的任何值相匹配。 (例如 $MLBSVar_SelectedPackages = 'packageA;packageB;packageC;')等等。

我想出了这条线,但它还行不通。你能帮帮我吗?

if ($MLBSVar_SelectedPackages -ne $null) { 
ForEach ($PackageName in $MLBSVar_SelectedPackages) {
ForEach ($item in $clb_SC_AvailablePackages.Items) {
if ($item -eq $PackageName) {
$clb_SC_AvailablePackages.Item($PackageName).Checked = $true
}
}
}
}

我还尝试用 .SetItemCheckState([System.Windows.Forms.CheckState]::Checked) 代替 .Checked。 (一个)问题似乎是在最后一节中处理列表项,因为它似乎是作为字符串而不是对象传递的?我有 VBS 背景,非常感谢您的帮助。

最佳答案

我认为您正在寻找的是类似于以下代码的内容。您可以使用 CheckedListBox 类的 SetItemChecked() 方法检查特定索引处的项目。我看到您已尝试使用 SetItemCheckState(),但没有提及 SetItemChecked()

# Import Windows Forms Assembly
Add-Type -AssemblyName System.Windows.Forms;
# Create a Form
$Form = New-Object -TypeName System.Windows.Forms.Form;
# Create a CheckedListBox
$CheckedListBox = New-Object -TypeName System.Windows.Forms.CheckedListBox;
# Add the CheckedListBox to the Form
$Form.Controls.Add($CheckedListBox);
# Widen the CheckedListBox
$CheckedListBox.Width = 350;
$CheckedListBox.Height = 200;
# Add 10 items to the CheckedListBox
$CheckedListBox.Items.AddRange(1..10);

# Clear all existing selections
$CheckedListBox.ClearSelected();
# Define a list of items we want to be checked
$MyArray = 1,2,5,8,9;

# For each item that we want to be checked ...
foreach ($Item in $MyArray) {
# Check it ...
$CheckedListBox.SetItemChecked($CheckedListBox.Items.IndexOf($Item), $true);
}

# Show the form
$Form.ShowDialog();

运行此代码后,您应该会看到一个类似于以下屏幕截图的对话框。

Windows Form

关于Powershell CheckedListBox 检查是否在字符串/数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21008294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com