Проверить элементы в поле контрольного списка на основе элементов в списке1

Я только что узнал о программировании графического интерфейса powershell.

Я пробую функцию. Когда форма открывается, в поле контрольного списка я хочу проверить элементы на основе элементов в списке1

Пожалуйста, посмотрите на картинку ниже,

Потому что нужно выбрать, когда форма инициализируется, может потребоваться больше навыков программирования.

Я пробовал некоторые методы, безуспешно, приветствую любые предложения, заранее спасибо

Проверить элементы в поле контрольного списка на основе элементов в списке1

Проверить элементы в поле контрольного списка на основе элементов в списке1

function Show-sel_item_psf {

    [void][reflection.assembly]::Load('System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')
    [void][reflection.assembly]::Load('System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')

    [System.Windows.Forms.Application]::EnableVisualStyles()
    $form1 = New-Object 'System.Windows.Forms.Form'
    $tabcontrol1 = New-Object 'System.Windows.Forms.TabControl'
    $tabpage1 = New-Object 'System.Windows.Forms.TabPage'
    $checkedlistbox1 = New-Object 'System.Windows.Forms.CheckedListBox'
    $tabpage2 = New-Object 'System.Windows.Forms.TabPage'
    $checkedlistbox2 = New-Object 'System.Windows.Forms.CheckedListBox'
    $buttonOK = New-Object 'System.Windows.Forms.Button'
    $InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'

    $list1 = @'
tabpage1
X008
X0011
X0013
tabpage2
Q008
M0013
'@

    $form1_Load = {

    }

    $Form_StateCorrection_Load=
    {
        #Correct the initial state of the form to prevent the .Net maximized form issue
        $form1.WindowState = $InitialFormWindowState
    }

    $Form_Cleanup_FormClosed=
    {
        #Remove all event handlers from the controls
        try
        {
            $form1.remove_Load($form1_Load)
            $form1.remove_Load($Form_StateCorrection_Load)
            $form1.remove_FormClosed($Form_Cleanup_FormClosed)
        }
        catch { Out-Null <# Prevent PSScriptAnalyzer warning #> }
    }

    $form1.SuspendLayout()
    $tabcontrol1.SuspendLayout()
    $tabpage1.SuspendLayout()
    $tabpage2.SuspendLayout()

    $form1.Controls.Add($tabcontrol1)
    $form1.Controls.Add($buttonOK)
    $form1.AutoScaleDimensions = '6, 13'
    $form1.AutoScaleMode = 'Font'
    $form1.ClientSize = '193, 236'
    $form1.Name = 'form1'
    $form1.StartPosition = 'CenterScreen'
    $form1.Text = 'Form'
    $form1.add_Load($form1_Load)

    $tabcontrol1.Controls.Add($tabpage1)
    $tabcontrol1.Controls.Add($tabpage2)
    $tabcontrol1.Location = '12, 12'
    $tabcontrol1.Name = 'tabcontrol1'
    $tabcontrol1.SelectedIndex = 0
    $tabcontrol1.Size = '169, 192'
    $tabcontrol1.TabIndex = 2

    $tabpage1.Controls.Add($checkedlistbox1)
    $tabpage1.Location = '4, 22'
    $tabpage1.Name = 'tabpage1'
    $tabpage1.Padding = '3, 3, 3, 3'
    $tabpage1.Size = '161, 166'
    $tabpage1.TabIndex = 0
    $tabpage1.Text = 'tabpage1'
    $tabpage1.UseVisualStyleBackColor = $True

    $checkedlistbox1.CheckOnClick = $True
    $checkedlistbox1.FormattingEnabled = $True
    [void]$checkedlistbox1.Items.Add('X008')
    [void]$checkedlistbox1.Items.Add('X009')
    [void]$checkedlistbox1.Items.Add('X0010')
    [void]$checkedlistbox1.Items.Add('X0011')
    [void]$checkedlistbox1.Items.Add('X0012')
    [void]$checkedlistbox1.Items.Add('X0013')
    [void]$checkedlistbox1.Items.Add('X0014')
    [void]$checkedlistbox1.Items.Add('X0015')
    $checkedlistbox1.Location = '12, 10'
    $checkedlistbox1.Name = 'checkedlistbox1'
    $checkedlistbox1.Size = '136, 154'
    $checkedlistbox1.TabIndex = 1
    $checkedlistbox1.UseCompatibleTextRendering = $True

    $tabpage2.Controls.Add($checkedlistbox2)
    $tabpage2.Location = '4, 22'
    $tabpage2.Name = 'tabpage2'
    $tabpage2.Padding = '3, 3, 3, 3'
    $tabpage2.Size = '161, 166'
    $tabpage2.TabIndex = 1
    $tabpage2.Text = 'tabpage2'
    $tabpage2.UseVisualStyleBackColor = $True

    $checkedlistbox2.CheckOnClick = $True
    $checkedlistbox2.FormattingEnabled = $True
    [void]$checkedlistbox2.Items.Add('Q008')
    [void]$checkedlistbox2.Items.Add('Q009')
    [void]$checkedlistbox2.Items.Add('Q0010')
    [void]$checkedlistbox2.Items.Add('M0013')
    [void]$checkedlistbox2.Items.Add('M0014')
    [void]$checkedlistbox2.Items.Add('M0015')
    $checkedlistbox2.Location = '12, 10'
    $checkedlistbox2.Name = 'checkedlistbox2'
    $checkedlistbox2.Size = '136, 154'
    $checkedlistbox2.TabIndex = 2
    $checkedlistbox2.UseCompatibleTextRendering = $True

    $buttonOK.DialogResult = 'OK'
    $buttonOK.Location = '66, 206'
    $buttonOK.Name = 'buttonOK'
    $buttonOK.Size = '60, 26'
    $buttonOK.TabIndex = 1
    $buttonOK.Text = 'OK'
    $buttonOK.UseCompatibleTextRendering = $True
    $buttonOK.UseVisualStyleBackColor = $True
    $tabpage2.ResumeLayout()
    $tabpage1.ResumeLayout()
    $tabcontrol1.ResumeLayout()
    $form1.ResumeLayout()

    #Save the initial state of the form
    $InitialFormWindowState = $form1.WindowState
    #Init the OnLoad event to correct the initial state of the form
    $form1.add_Load($Form_StateCorrection_Load)
    #Clean up the control events
    $form1.add_FormClosed($Form_Cleanup_FormClosed)
    #Show the Form
    return $form1.ShowDialog()

}

#Call the form
Show-sel_item_psf | Out-Null

Вы пробовали SetItemChecked? docs.microsoft.com/en-us/dotnet/api/…

Ash 21.05.2019 10:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
91
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала вам нужно получить индекс из элемента, который вы хотите установить. А с индексом можно использовать SetItemChecked

это должно работать так:

$list1 = "X008","X0011","X0013"
for($i = 0;$i -lt $checkedlistbox1.Items.Count;$i++) {
    if ($list1.Contains($checkedlistbox1.Items[$i])) {
        $checkedlistbox1.SetItemChecked($i,$True)
    }
}

Здравствуйте, спасибо за вашу помощь, моя ситуация немного сложна, я только что обновил код и изображения. Теперь есть два контрольных списка, которыми нужно манипулировать в соответствии с символами в списке. Это возможно?

tianyi 21.05.2019 11:36

Делайте это для каждого отдельно.

guiwhatsthat 21.05.2019 11:53

И, пожалуйста, не просто обновляйте свой вопрос дополнительным кодом. Просто укажите Минимальный воспроизводимый пример

guiwhatsthat 21.05.2019 11:54

Я не знаю, как писать код. Нужно преобразовать формат элементов list1? Можете ли вы предоставить пример кода? большое спасибо

tianyi 21.05.2019 12:14

Вам нужно создать массив для каждой вкладки, а затем использовать код, который я предоставил. Но я не буду писать вам весь код. Если вы не умеете программировать, попробуйте научиться или наймите разработчика. SO не является службой написания кода

guiwhatsthat 21.05.2019 12:21

Спасибо за напоминание, мне не нужно, чтобы вы писали весь код, я просто не совсем понимаю, как преобразовать мой список в массив, в любом случае, еще раз спасибо за вашу помощь.

tianyi 21.05.2019 12:29

Пример массива $list1 = "Value1", "Value2". В вашем примере вы сделали строку. Просто добавьте каждое значение строки list1 через запятую. Как в моем примере

guiwhatsthat 21.05.2019 12:36

О, у меня слишком плохой уровень программирования. Процесс преобразования должен определить элементы, содержащиеся на каждой вкладке. Я не могу найти ответ на данный момент, и я могу решить его позже.......

tianyi 21.05.2019 12:41

Другие вопросы по теме