Возникли проблемы с заполнением ComboBox2 на основе ComboBox1 - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь заполнить ComboBox2 на основе выбора ComboBox1

Фрагменты кода:

$mySite = (Import-CSV .\mytest.csv | Group-Object Site | foreach-object { $_.group | select -Last 1 | select site })
# $ComboBox1 = "S12"
$thisone = (import-csv .\mytest.csv | % {
        $ADSNames = $_.site.split(",") 
        $Site = $_.Site
        $dept = $_.dept
        foreach ($name in $ADSNames)
        {
            if ($name -eq $Combobox1)# $name)
            {

            }
        }
    })

####################################################################################################    
#####   Create Combo Boxes
####################################################################################################
    #
    $Combobox1 = New-Object System.Windows.Forms.Combobox
    $Combobox1.Location = '35,25'
    $Combobox1.Size = '50,20'
    $Combobox1.Items.AddRange($mySite.site)

    $combobox2 = New-Object System.Windows.Forms.Combobox
    $combobox2.Location = '130,25'
    $combobox2.Size = '50,20'
    $combobox2.items.Add($thisone.dept)

    $Form.Controls.Add($combobox1)
    $Form.Controls.Add($combobox2)

Если я выделю только следующий код:

# $ComboBox1 = "S12"
$thisone = import-csv .\BOP-Sites.csv | % {
    $ADSNames = $_.site.split(",") 
    $Site = $_.Site
    $dept = $_.dept
    foreach ($name in $ADSNames)
    {
        if ($name -eq $Combobox1) # $name)

        {
        write-host $dept
        }
    }
}

Write-Host показывает только те строки, которые соответствуют ComboBox1 «Выполнить выбранные команды» (см. Ниже)

KK0
DDD
HH1
BB2
VV4
ZZ3
SSS
WW4
QQ5
JJJ

Ниже приведен код для заполнения ComboBox2

$ComboBox1.add_SelectedIndexChanged({
$combobox2.Items.Clear() # Clear the list
$combobox2.Text = $null  # Clear the current entry
Switch ($ComboBox1.Text) {
        $thisone {

            $dept | ForEach { 
            $combobox2.Items.Add($_)
        }
    }

К сожалению, я не могу получить ComboBox2 для правильного заполнения

1 Ответ

0 голосов
/ 25 января 2020

Предполагая, что ваши данные в формате:

enter image description here

Тогда:

$csvlocation = 'c:\temp\book1.csv'

$SiteData = Import-CSV $csvlocation


Add-Type -AssemblyName System.Windows.Forms


$form = New-Object System.Windows.Forms.Form
$form.Text = "Foo"
$form.Size = '400,400'

$Combobox1 = New-Object System.Windows.Forms.Combobox
$Combobox1.Location = '35,25'
$Combobox1.Size = '50,20'
$Combobox1.Items.AddRange($SiteData.site)

$combobox2 = New-Object System.Windows.Forms.Combobox
$combobox2.Location = '130,25'
$combobox2.Size = '50,20'


$form.Controls.AddRange(@($combobox1,$combobox2))


$ComboBox1.add_SelectedIndexChanged({
    $combobox2.Items.Clear() # Clear the list
    $combobox2.Text = $null  # Clear the current entry
    $ThisSite = $SiteData | Where-Object { $_.Site -eq $ComboBox1.Text } 
    ($ThisSite.Dept).Split(',') | ForEach-Object {
        $combobox2.Items.Add($_)
    }
    $Combobox2.SelectedIndex = 0
})

# Show form
$form.ShowDialog() | Out-Null
$form.Dispose()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...