Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-17 00:00
관리 메뉴

nomad-programmer

[Programming/C#] WinForm : Form 컨트롤 본문

Programming/C#

[Programming/C#] WinForm : Form 컨트롤

scii 2020. 10. 2. 23:33

UI(사용자 인터페이스)는 응용 프로그램과 사용자가 대화를 하는 창구이다. 

윈도우 운영체제는 사용자 인터페이스를 위해 메뉴, 콤보박스, 리스트뷰, 버튼, 텍스트박스 등과 같은 표준 컨트롤을 제공한다.
.NET 프레임워크의 WinForm은 이들 표준 컨트롤을 아주 간편하게 창 위에 올릴 수 있도록 잘 포장해놨다. 이 컨트롤들을 제어하는 데 필요한 각종 메소드와 프로퍼티, 이벤트들도 잘 정리되어 있다.

컨트롤이란?

컨트롤(Control)이란, 윈도우 운영체제가 제공하는 사용자 인터페이스 요소를 말한다. 응용 프로그램을 제어하는 데 사용하는 도구라는 의미에서 붙여진 이름이다. 버튼, 텍스트박스 등이 컨트롤의 예이다.
유닉스의 모티프나 Java의 Swing같은 것을 GUI 플랫폼에서는 이것을 위젯(Window Getget을 줄여 Widget이라고 부른다) 이라고 부르고 델파이에서는 VCL(Visual Component Library) 라고 부른다.

컨트롤 생성 방법

  1. 컨트롤의 인스턴스 생성
  2. 컨트롤의 프로퍼티 값 지정
  3. 컨트롤의 이벤트에 이벤트 처리기 등록
  4. 폼에 컨트롤 추가

Step 1. 컨트롤의 인스턴스 생성

WinForm의 모든 컨트롤은 System.Windows.Forms.Control을 상속한다. 이 형식이 모든 윈도우 컨트롤이 지원해야 하는 그래픽, 동작, 이벤트 등을 제공하기 때문에 이 컨트롤부터 상속받는 어떤 클래스라도 Form 위에 올려서 윈도우 사용자 인터페이스 요소로 사용할 수가 있다.

Button button = new Button();

Step 2. 컨트롤의 프로퍼티 값 지정

인스턴스를 만들었다면 각 프로퍼티에 값을 지정하여 컨트롤의 모양을 결정한다.

button.Text = "click me!";
button.Left = 100;
button.Top = 50;

Step 3. 컨트롤의 이벤트에 이벤트 처리기 등록

컨트롤은 애플리케이션의 정보를 표시하는 기능을 하기도 하지만 사용자로부터 입력을 받는 창구이기도 하다. 사용자가 버튼을 클릭하면 메시지 박스를 띄우도록 이벤트 처리기를 선언하고 이벤트에 등록한다.

button.Click += (object sender, EventArgs e) =>
    {
        MessageBox.Show("clicked!");
    };

Step 4. 폼에 컨트롤 추가

WinForm창에 버튼 컨트롤을 올릴 준비가 다 됐다. Form의 인스턴스를 생성하고, 이 인스턴스에서 Contorls 프로퍼티의 Add() 메소드를 호출하여 선언한 button 객체를 Form에 올리면 된다.

MainApp form = new MainApp();
form.Controls.Add(button);

Control 예제

using System;
using System.Windows.Forms;

namespace SimpleWindow
{
    internal class MainApp : Form
    {
        static int Main(string[] args)
        {
            Button button = new Button();

            button.Text = "click me!";
            button.Left = 100;
            button.Top = 50;

            button.Click += (object sender, EventArgs e) =>
            {
                MessageBox.Show("clicked!");
            };

            MainApp form = new MainApp();
            form.Text = "Form & Control";
            form.Height = 150;

            form.Controls.Add(button);

            Application.Run(form);

            return 0;
        }
    }
}
Comments