C#/윈폼

C# 윈폼 컨트롤 다루기 2

doridam 2023. 7. 13. 15:15

윈폼에는 컨트롤이 많기에 이전 포스트에 이어서 작성합니다.

1. ListView 컨트롤

ListView 컨트롤은 디렉토리처럼 아이템들을 여러 리스트의 형태로 보여주는 컨트롤이다. 5가지의 형태가 있고,
Detail, List, Tile, LargeIcon, SmallIcon 등이 있다.

 

화면 구성의 경우 ListView 와 RadioButton 으로 구성하였다. 현재 디렉토리의 파일을 불러온뒤 rediobutton을 이용해 View 를 컨트롤 하는 예제이다.

먼저 파일을 불러오는 GetCurrentDirectory 메서드와 ListView를 업데이트하는 SettingListView 메서드가 있다.
GetCurrentDirectory의 경우 현재 디렉토리의 정보를 불러온 뒤 정보를 통해 파일정보에 대한 배열을 반환한다.
SettingListView는 listview와 GetCurrentDirectory의 FileInfo[] 를 받아 해당 정보를 listviewitem에 셋팅과 컬럼 정보를 저장한뒤 갱신한다.
radiobutton 의 경우 클릭시 listview의 view를 변경하도록 작성하였다.

정상적으로 파일의 정보를 가져와서 출력한다. List로 변경할시 view가 변경된다.

2. MaskedTextBox 컨트롤

TextBox에 입력 형식을 제한하는 기능을 추가한 컨트롤, 입력 형식을 제한하고 올바르지 않은 입력에 예외를 발생시켜 처리한다.

 

MaskedTextBox 를 추가하고 해당 label 유형에 맞는 입력형식을 제한한 예제이다.
만약 예상된 값과 다른 값이 입력될시 MaskInputrejected 이벤트가 발생하여 MessageBox를 출력한다.

날짜에 해당 하는 부분에 문자를 입력했을때 MaskInputrejected 이벤트가 발생하여 설정한 MessageBox가 출력되는것을 확인 할 수 있다.

3. MonthCalendar 컨트롤

MonthCalendar 컨트롤의 경우 날짜 범위 혹은 날짜를 선택할 수 있게 하는 컨트롤이다. 범위로 선택하고자 한다면 Shift 키를 눌러 드래그하면 된다.

해당 예제는 초기 선택 범위를 오늘부터 3일 뒤까지 초기 값을 설정, 선택할 수 있는 최대 값을 31일로 늘리는 예제이다. 또한 선택한 날짜가 변경 될때 아래 textbox의 값을 변하게 하는 dateChanged 이벤트를 작성한 예제이다.

이미지와 같이 초기값은 2023-07-13 ~ 16으로 설정되어 있고, 선택한 날짜를 변경한다면 아래 TextBox가 변하는 것을 확인 할 수 있다.

3-1 NotifyIcon 컨트롤

NotifyIcon 컨트롤은 데스크탑 하단의 알림영역에 작은 아이콘을 보여주고 상호작용할 수 있게 하는 컨트롤이다. 이는 백그라운드에서 실행되고 있는 프로그램들과 연결되어 있다.

아이콘

먼저 해당 컨트롤을 사용하기 위해서는 ico 파일이 필요하다. 도구 상자에서 NotifyIcon 을 드래그앤 드랍 후 속성에서 Icon을 지정한다.

이전 예제에서 추가된 ContextMenu와 notifyIcon1_DoubleClick 이다. Icon을 더블 클릭했을때 보여질 메뉴를 설정하고 더블 클릭하면 그에 맞는 작업을 수행한다.

어플리케이션을 실행시 설정한 대로 Icon과 열기/종료 가 나오는것을 확인할 수 있다.

4. NumbericUpDown 컨트롤

숫자를 일정 양만큼 증가 혹은 감소시킬 때 쓰는 컨트롤이다. Value 속성으로 값을 설정 할 수 있다. 또한 Increment 속성으로 통해 UpDown 의 양을 조절할 수 있다.

NumbericUpDown 컨트롤의 초기 값을 21로 설정한다. 값의 변동 이벤트인 ValueChanged 에 값에 따라 화씨로 변하는 구문을 작성 후 화씨의 값을 textBox에 설정한다.

 

값의 변동에 따라 자동으로 아래의 textBox 의 값이 변하게 된다.

5. PictureBox 컨트롤

picturebox는 이미지를 보여주는 컨트롤이다. 그림은 외부 파일, 리소스, 데이터베이스등에서 가져올 수 있다. 또한 그림을 보여주는 스타일을 지정할 수 있는데, AutoSize, CenterImage, Normal, StretchImage, Zoom 등이 있다.

PictureBox와 버튼을 추가했다. 버튼 클릭시 picturebox에 Bitmap 클래스의 FromFile 메서드를 사용하여 드라이브에 저장되어 있는 img.jpg를 설정한다. 또한 sizemode를 strectchImage로 설정한다.
picturebox를 클릭시 모드가 zoom 이라면 stretchImage로 바꾸고 아니라면 zoom으로 바꾼다.

좌측 : 버튼을 눌렀을때 | 우측 : 이미지를 눌렀을때 
정상작동을 확인했다.

 

이미지 저장을 구현하기 위해 Save Image 버튼을 하나 더 추가하였다. 해당 버튼에 대한 이벤트를 추가하였다. Bitmap 을 통해 pictureBox1의 image를 저장한뒤 save 메서드를 사용하여 이미지를 저장한다. 저장시 파일에 대한 포맷 및 경로와 이름을 지정할 수 있다.

Load Image 후 Save Image 버튼을 클릭하여 jpg 를 bmp로 저장하였다.

6. RadioButton 컨트롤

RadioButton 컨트롤은 선택옵선을 보여주는 컨트롤이다. 여러개의 옵션을 주고 사용자에게 하나를 선택하게 한다.
만약 이중 선택이 될 경우 전자의 선택은 해제 되지만 GroupBox를 통해 여러개의 그룹으로 나누어 선택하게 할 수 있다.

2개의 GroupBox를 만들고 그 안에 RadioButton을 2개씩 넣었다.

 

enum을 사용하여 Gender와 Food로 나누고 RadioButton이 바뀔때 마다 아래에 TextBox의 값이 변하도록 작성한 예제이다.

 

 

RadioButton의 선택이 바뀌면 아래 TextBox의 값도 바뀌는것을 확인했다.

 

7. TextBox 컨트롤

TextBox 컨트롤은 한 줄 또는 여러 줄의 텍스트를 보여주는 컨트롤이다. 여러줄의 텍스트를 출력하기 위해서는 Multiline 속성을 true로 셋팅하고, 입력 문자수를 제한 : MaxLength, 읽기 전용 : ReadOnly , 대체 문자 : PasswordChar 를 사용한다.
textBox1.MaxLength = 10;
textBox1.ReadOnly = true;
textBox1.PasswordChar = '*'​

 

상단 : 한줄 TextBox | 하단 : 여러줄 TextBox
textBox1과 textBox2에 초기 값을 할당한다. 실행시

이러한 결과를 볼 수 있는 예제이다.