【PowerShellでGUI 4】ComboBox
PowerShellで作成するWindwos Formアプリの部品のうち、今回はコンボボックスについてです。
ComboBox
今回のサンプルアプリの画面イメージはこちら。

そして上記画面のソースコードがこちら
using namespace System.Windows.Forms Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing [Application]::EnableVisualStyles() # フォーム $frame = New-Object Form -Property @{ Text = 'Sample App' Size = New-Object Drawing.Size(360, 180) MaximizeBox = $false FormBorderStyle = 'FixedDialog' Font = New-Object Drawing.Font('Meiryo UI', 8.5) } # ラベル定義 $Label1 = New-Object Label -Property @{ Text = '入力可能コンボボックス' Location = New-Object Drawing.Point(20, 20) AutoSize = $True } $Label2 = New-Object Label -Property @{ Text = '入力不可コンボボックス' Location = New-Object Drawing.Point(160, 20) AutoSize = $True } $frame.Controls.AddRange(@($Label1,$Label2)) # コンボボックス定義 $CombpBox1 = New-Object Combobox -Property @{ Location = New-Object Drawing.Point(20, 50) } [void]$CombpBox1.Items.Add('Item1') [void]$CombpBox1.Items.Add('Item2') $CombpBox1.Add_SelectedIndexChanged({ $Label3.Text = $CombpBox1.Text }) $CombpBox2 = New-Object Combobox -Property @{ Location = New-Object Drawing.Point(160, 50) DropDownStyle = 'DropDownList' FlatStyle = 'Flat' } [void]$CombpBox2.Items.Add('ItemA') [void]$CombpBox2.Items.Add('ItemB') $CombpBox2.Add_SelectedIndexChanged({ $Label4.Text = $CombpBox2.Text }) $frame.Controls.AddRange(@($CombpBox1,$CombpBox2)) $Label3 = New-Object Label -Property @{ Location = New-Object Drawing.Point(20, 90) AutoSize = $True } $Label4 = New-Object Label -Property @{ Location = New-Object Drawing.Point(160, 90) AutoSize = $True } $frame.Controls.AddRange(@($Label3,$Label4)) $frame.ShowDialog()
解説
29~36行目が左側のコンボボックスの定義、および値の設定と、画面上で選択した値をラベルに表示するためのソースコードになります。
プロパティは、ほぼほぼ既定値ですが、それだと任意のテキストを入力可能な状態になってしまいます。
コンボボックスを使う場合は、既定の候補地の中からのみ選択して欲しい場合が多いと思うので、そのケースを想定したのが右側のコンボボックスで、38~47行目のソースが該当します。
$CombpBox2 = New-Object Combobox -Property @{ Location = New-Object Drawing.Point(160, 50) DropDownStyle = 'DropDownList' FlatStyle = 'Flat' } [void]$CombpBox2.Items.Add('ItemA') [void]$CombpBox2.Items.Add('ItemB') $CombpBox2.Add_SelectedIndexChanged({ $Label4.Text = $CombpBox2.Text })
ポイントとしては、
- DropDownStyle のプロパティ値を’DropDownList’にする(既定値は’DropDown’)
- FlatStyle のプロパティ値を’Flat’にする(既定値は’Standard’)
の2点です。FlatStyleについては見た目だけの問題ですが、規定値のままだと
と背景色が何故か灰色になってしまい、使用不可の状態(Enabled = False)に見えてしまうので、それを回避するための設定になります。
その他のプロパティについては、マイクロソフトの公式サイトで確認してみてください。
今回はここまで。
次回はデータグリッドビューついて記載予定です。
以上、参考になれば幸いです。