본문 바로가기
파워쉘(Powershell)/파워쉘 GUI

파워쉘 콤보박스 (Powershell ComboBox)

by 예배파 2024. 3. 28.

콤보박스는 여러개의 항목중 하나의 항목을 선택할 때 사용합니다

 

 

사용방법

Add-Type -AssemblyName System.windows.Forms

$form= New-Object System.Windows.Forms.Form    
$form.Size = '200,200'                         

$cb = New-Object -TypeName System.Windows.Forms.ComboBox
$cb.Location = '10,10'
$cb.Size = '100,100'

$cb.Items.Add("첫번째 항목")
$cb.Items.Add("두번째 항목")
$cb.Items.Add("세번째 항목")
$cb.Items.Add("네번째 항목")

$cb.SelectedIndex = 0

$form.Controls.Add($cb)
$form.ShowDialog()

 

 

 

콤보박스에 선택된 아이템 

 

콤보박스의 Text 속성에 선택된 아이템 정보가 저장

Add-Type -AssemblyName System.windows.Forms

$form= New-Object System.Windows.Forms.Form    
$form.Size = '200,200'                         

$cb = New-Object -TypeName System.Windows.Forms.ComboBox
$cb.Location = '10,10'
$cb.Size = '150,100'

$cb.Items.Add("첫번째 항목")
$cb.Items.Add("두번째 항목")
$cb.Items.Add("세번째 항목")
$cb.Items.Add("네번째 항목")

$cb.SelectedIndex = 0

$btn = New-Object System.Windows.Forms.Button
$btn.Location = '10,100'               
$btn.AutoSize = $true       
$btn.Text = "콤보박스에 선택된 아이템"    

$btn.Add_Click({
    Write-Host $cb.Text
})                        

$form.Controls.AddRange($($cb,$btn))
$form.ShowDialog()

버튼을 클릭하면 콤보박스에   선택된 아이템 출력

 

 

 

SelectedIndexChanged 이벤트

 

콤보박스의 아이템을 선택할 때 발생하는 이벤트입니다

Add-Type -AssemblyName System.windows.Forms

$form= New-Object System.Windows.Forms.Form    
$form.Size = '200,200'                         

$cb = New-Object -TypeName System.Windows.Forms.ComboBox
$cb.Location = '10,10'
$cb.Size = '150,100'

$cb.Items.Add("첫번째 항목")
$cb.Items.Add("두번째 항목")
$cb.Items.Add("세번째 항목")
$cb.Items.Add("네번째 항목")

$cb.SelectedIndex = 0

$cb.Add_SelectedIndexChanged({
    Write-host $cb.Text
})               

$form.Controls.Add($cb)
$form.ShowDialog()

 

선택된 아이템이 바뀔때 콤보박스의 아이템을 출력합니다

 

 

 

데이터 바인딩

 

데이터 바인딩을 이용하면 각 항목에 값을 묶어서 사용할 수 있습니다  

콤보박스에 이름과 전화번호를 데이터 바인딩으로 사용하면 따로 이름, 전화번호를 저장 할 필요 없습니다

DataTable을 사용해서 데이터 바인딩을 할 수 있습니다

Add-Type -AssemblyName System.windows.Forms

$form= New-Object System.Windows.Forms.Form    
$form.Size = '200,200'                         

$cb = New-Object -TypeName System.Windows.Forms.ComboBox
$cb.Location = '10,10'
$cb.Size = '150,100'

$dt = New-Object system.Data.DataTable

$col1 = New-Object system.Data.DataColumn "Value"
$col2 = New-Object system.Data.DataColumn "Text"

$dt.columns.add($col1)
$dt.columns.add($col2)

$row1 = $dt.NewRow()
$row1.Text = "홍길동"
$row1.Value = "010-111-1111"
$dt.Rows.Add($row1)

$row2 = $dt.NewRow()
$row2.Text = "김철수"
$row2.Value = "010-222-2222"
$dt.Rows.Add($row2)

$cb.DisplayMember = "Text"
$cb.ValueMember = "Value"
$cb.Datasource = $dt

$cb.Add_SelectedIndexChanged({
    write-host "이름 :" $cb.SelectedItem["Text"] 
    write-host "전화번호 :" $cb.SelectedItem["Value"]
})               

$form.Controls.Add($cb)
$form.ShowDialog()


실행결과

이름 : 김철수
전화번호 : 010-222-2222

이름 : 홍길동
전화번호 : 010-111-1111