Skip to main content

ComboBox

項目を文字列にする場合

ps1
Add-Type -AssemblyName System.Windows.Forms

$form = New-Object System.Windows.Forms.Form
$form.Text = "タイトル"
$form.Size = New-Object System.Drawing.Size(600, 200)

$combo = New-Object System.Windows.Forms.ComboBox
$combo.Location = New-Object System.Drawing.Point(370,10)
$combo.Width = 100
$combo.DropDownStyle = 'DropDownList'
$combo.Anchor = "Top, Right"

[void]$combo.Items.Add("項目0")
[void]$combo.Items.Add("項目1")
[void]$combo.Items.Add("項目2")
[void]$combo.Items.Add("項目3")
$combo.SelectedIndex = 2

Write-Host $combo.SelectedItem # => 項目2

$form.Controls.Add($combo)

[void]$form.ShowDialog()

項目をオブジェクトにする場合

表示と値を分けることができる。はずだが、うまいこと出ない。

ps1
Add-Type -AssemblyName System.Windows.Forms

$form = New-Object System.Windows.Forms.Form
$form.Text = "タイトル"
$form.Size = New-Object System.Drawing.Size(600, 200)

$combo = New-Object System.Windows.Forms.ComboBox
$combo.Location = New-Object System.Drawing.Point(370,10)
$combo.Width = 100
$combo.DropDownStyle = 'DropDown'
$combo.Anchor = "Top, Right"

$data = @(
[PSCustomObject]@{ Name = "項目0"; Value = "c0" }
[PSCustomObject]@{ Name = "項目1"; Value = "c1" }
[PSCustomObject]@{ Name = "項目2"; Value = "c2" }
)

$combo.DisplayMember = "Name"
$combo.ValueMember = "Value"
$combo.DataSource = $data

# $combo.SelectedValue = "c1"

# Write-Host $combo.SelectedValue # => ?

$form.Controls.Add($combo)

[void]$form.ShowDialog()