폼(Form)
Form 중앙 배치
$CenterScreen = [System.Windows.Forms.FormStartPosition]::CenterScreen;
$Main_Form.StartPosition = $CenterScreen;
- Form이 생성 될 때 화면 가운데에 생성된다.
크기 수동 조절 기능 OFF
$Form.AutoSizeMode = "GrowAndShrink"
최대화 버튼 비활성화
$Form.MaximizeBox = $false
보이기 , 숨기기
$Form.show() , $Form.hide()
폼 닫기 기능 OFF
$Form.Add_Closing({ $_.Cancel = $true })
폼 닫을 때 특정 함수 호출
$Form.Add_Closing({ my_function })
폼 최상단에 고정
$Form.topmost = $true
폼 키 입력 발생 이벤트
# Ctrl + 1을 누르면 폼 닫기
$Form.Add_KeyDown({
if($_.KeyCode -eq "D1" -and $_.Control)
{ $Form.Close() }
})
텍스트 박스
값 불러오기
$TextBox1.Text
입력길이 가져오기
$TextBox1.TextLength
읽기전용
$TextBox1.ReadOnly = "True"
비활성화
$TextBox1.Enabled = $false
엔터(개행) 허용
$TextBox1.multiline = $true
대신 위 기능을 허용할 경우 Ctrl+A와 같은 단축키 기능을 쓰지 못함.
$TextBox1.ShortcutsEnabled = "True" 도 안먹힌다.
포커스 설정
$Form.Activate(); $TextBox1.focus();
스크롤 생성
$TextBox1.Scrollbars = "Vertical" or "horizontal" or "both"
※ 유의할 점
수평바 생성 시 "글 넘치면 자동 개행" 기능을 꺼놓고 해야한다.
$TextBox1.WordWrap = $false
위 기능을 모두 포함한 RichTextBox 사용을 추천한다.
배경 및 폰트색 변경
$TextBox1.ForeColor = "White" # 폰트
$TextBox1.BackColor = "Black" # 배경
RichTextBox
TextBox는 글씨만 작성할 수 있는 반면
RichTextBox는 각종색깔, 서식, 줄간격 및 이미지까지 모두 넣을 수 있다.
단 [Environment]::NewLine 가 안먹히는것 같다.
키워드 찾기
$input_box.Find('A');
글자 색 변경
# 찾은 키워드의 글자색 변경
$input_box.SelectionColor = [Drawing.Color]::red;
# 바탕색 변경
$input_box.SelectionBackColor = [Drawing.Color]::blue;
# 일괄 변경
$find_char = 'A'
$len = $input_box.TextLength;
$index = 0;
$lastIndex = $input_box.Text.LastIndexOf($find_char);
while ( $index -lt $lastIndex )
{
$input_box.Find($find_char, $index, $len, [System.Windows.forms.RichtextBoxFinds]::None);
$input_box.SelectionBackColor = [Drawing.Color]::red;
$index = $input_box.Text.IndexOf($find_char, $index) + 1;
}
# 키워드 중 모든 'A' 의 바탕색을 빨간색으로 변경
# Find의 4번 인자는 검색에서 찾은 결과가 단어 단위로 검색되었는지 여부에 관계 없이
# 모든 결과를 찾습니다.
메시지 박스
메시지 띄우기
[System.Windows.Forms.MessageBox]::Show('hi')
[System.Windows.MessageBox]::show("textbox") 대신 [System.Windows.Forms.MessageBox]를 사용한다.
- 자세한 이유는 모르나 메시지 박스를 띄울 때 Forms가 없으면 exe 실행 시 어셈블러 오류가 뜬다.
버튼 만들기
$oRetrun=[System.Windows.Forms.MessageBox]::Show('content',"title",[System.Windows.Forms.MessageBoxButtons]::OKCancel)
if ( $oRetrun -eq "OK" )
{ echo 'OK ' } else { "Cancle" }
클립보드에 텍스트 복사
$Textbox1.SelectAll()
$Textbox1.Copy()
라디오 버튼
기본 체크 값 설정
$RadioButton1.Checked = "True"
라디오 버튼을 특정 그룹끼리 묶고 싶은 경우
Groupbox 컴포넌트를 사용한다.
$Groupbox1 ...
$Radiobut1
$Radiobut2
$Groupbox2 ...
$Radiobut3
$Radiobut4
$MainForm.controls.AddRange(@($Groupbox1,$Groupbox2))
$Groupbox1.controls.AddRange(@($Radiobut1,$Radiobut2))
$Groupbox1.controls.AddRange(@($Radiobut3,$Radiobut4))
다이얼로그 박스
디렉토리 선택
Add-Type -AssemblyName System.Windows.Forms
$browser = New-Object System.Windows.Forms.FolderBrowserDialog
$check = $browser.ShowDialog()
단일 파일 선택
Add-Type -AssemblyName System.Windows.Forms
$browser = New-Object System.Windows.Forms.OpenFileDialog
$browser.Filter = "All Files (*.txt)|*.txt”
$check = $browser.ShowDialog()
if ($check -ne "Cancel" ) { $browser.FileNames }
다수 파일 선택
$browser.Multiselect = "True"
확장자 지정
$browser.Filter = "All Files (*.txt)|*.txt”
기본 경로 선택
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog -Property @{
SelectedPath = 'C:\Temp’ }
콤보 박스
아이템 등록
# 아이템 목록 생성
$combobox_items = @("cpp","c-sharp","c")
# 아이템 목록 추가
foreach($computer in $combobox_items)
{ $combobox.Items.add($computer) }
# 선택된 아이템 인덱스 반환
$combobox_items.SelectedIndex
이벤트 추가
# 아이템 선택 시 발생 - 선택한 아이템 이름 출력
$combobox.add_SelectedIndexChanged( $combobox.SelectedItem.ToString() )
내용 수정 금지
$li_account_list.DropDownStyle = 'DropDownList'
프로그레스바(진행률 표시)
PerformStep
$items = @(1,2,3,4,5)
$ProgressBar1.Maximum = $items.Count
$ProgressBar1.Step = 1
$ProgressBar1.value = 0
foreach ( $item in $items )
{
Start-Sleep -Seconds 1;
$ProgressBar1.PerformStep()
}
PerformStep 메서드는 Step 속성의 양만큼 ProgressBar의 현재 값을 증가시킨다.
리스트뷰
컬럼/아이템 추가
$listView.Columns.Add('First Name') # 컬럼
$item1 = New-Object System.Windows.Forms.ListViewItem('Item 1')
$item1.SubItems.Add('John')
$item2 = New-Object System.Windows.Forms.ListViewItem('Item 1')
$item2.SubItems.Add('smith')
$listView.Items.AddRange(($item1,$item2)) # 아이템 추가
클릭 이벤트
$listview.FullRowSelect = $true
$listview.Add_ItemActivate({DoSomething})
Function DoSomething()
{
if($listview.SelectedItems.Count -eq 1)
{
echo $listview.SelectedItems[0].Text
# 두 번째 컬럼 텍스트 가져오기
echo $listview.Items[0].SubItems[1].Text
}
}
아이템 반환 및 초기화
listView1.Items.RemoveAt(0);
listView1.Items.Clear();
컬럼 사이즈 자동 조절
$ListViewProcesses.AutoResizeColumns(0) # no resizing
$ListViewProcesses.AutoResizeColumns(1) # base width on header length
$ListViewProcesses.AutoResizeColumns(2) # base width on content length
'OS-서버 > 윈도우' 카테고리의 다른 글
리눅스만 설치된 PC를 윈도우로 전환하기 (0) | 2019.10.20 |
---|---|
원격 데스크톱 포트 변경(수동,자동) (1) | 2019.09.09 |
파워쉘(Powershell) 간편하게 GUI 만들기 (0) | 2019.06.23 |
윈도우 공유 폴더 (0) | 2019.06.19 |
파일 시스템 체크 (0) | 2019.06.17 |