프로그래밍 기술/Windows Form 응용 프로그램

1. Form [Windows Forms 응용 프로그램]

언제나휴일 2016. 4. 5. 12:54
반응형

 1.Form

 

 Form 클래스는 Windows Forms 응용 프로그램의 UI(사용자 인터페이스)를 구성하는 창과 대화상자를 나타내는 클래스입니다.

 

 Form 클래스는 Windows Forms 응용 프로그램의 기본 단위로 GUI(Graphics User Interface) 환경에서 사용자와 상호 작용하기 위한 다양한 UI 컨트롤을 포함하여 쉽고 빠르게 개발할 수 있게 만들어졌습니다.

 

상속 계층

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Windows.Forms.Control
        System.Windows.Forms.ScrollableControl
          System.Windows.Forms.ContainerControl
            System.Windows.Forms.Form   

 

 이번 장에서는 Microsoft Wisual Studio.NET 통합 개발 환경에서 Windows Forms 응용 프로그램을 만드는 방법을 알아볼게요. 그리고 개발 도구에서 만들어 주는 코드와 개발자가 어떻게 개발 도구를 효과적으로 사용하여 프로그래밍을 하는지 살펴볼 것입니다.

 

 

 

1. 1 Windows Forms 응용 프로그램 만들기

 

 먼저 Microsoft Visual Studio.NET 통합 개발 환경에서 Windows Forms 응용 프로그램을 만드는 것부터 출발합시다. 메뉴에서 [파일]=>[새로만들기]=>[프로젝트]를 선택하세요. 그리고 새 프로젝트 창에서 Windows Forms 응용 프로그램을 선택하여 프로젝트 명을 입력하여 프로젝트를 생성합니다.


프로젝트 새로 만들기

[그림 1.1] 프로젝트 새로 만들기


Windows Forms 프로젝트 템플릿 선택

[그림 1.2] 새 프로젝트 창 - 프로젝트 템플릿 선택


Windows Forms 응용 프로젝트 초기 화면

[그림 1.3] 생성한 프로젝트 초기 화면


Windows Forms 응용 프로그램 실행 화면

[그림 1.4] FirstApp 응용 프로그램 실행 화면


 

 

 프로젝트를 생성하면 [그림 1.3]과 같은 초기 화면이 나타납니다. 그리고 이 상태에서 실행(Ctrl + F5)하면 하나의 창이 뜨는 간단한 응용 프로그램이 동작합니다. 개발자가 코드를 작성한 부분이 없어 특별한 동작은 하지 않지만 가장 가벼운 형태의 윈도우즈 응용 프로그램이 만들어 진 것입니다.

 

 이제 마법사에 의해 만들어진 것들이 무엇인지 살펴봅시다.

 

  [메뉴]=>[보기]=>[솔루션 탐색기]를 선택하여 솔루션 탐색기 창을 보면 트리 형태로 솔루션 노드 자식으로 프로젝트 노드를 확인할 수 있습니다. 그리고 프로젝트 노드에는 Properties와 참조, Form1.cs, Program.cs 노드가 나타납니다.

 

솔루션 탐색기 프로젝트의 Properties 노드

[그림 1.5] Properites 노드

 

 Properties 노드에서는 프로젝트의 어셈블리 정보 및 리소스, 설정에 관한 정보를 빠르게 확인 및 편집할 수 있습니다.

 

 AssemblyInfo.cs 파일에는 프로젝트의 어셈블리 정보들이 들어있습니다. 이 부분은 개발자가 직접 작성하는 것보다 프로젝트 속성 창에서 설정하면 마법사에 의해 자동으로 편집해 주는 것을 그대로 사용하는 것이 일반적입니다. 이 책에서도 앞으로 이 부분에 관한 내용은 다루지 않을 것입니다.

 

 Resources 부분은 프로그램에서 사용할 이미지나 문자열 등의 자원에 관한 부분입니다. Settings 부분은 응용 프로그램의 속성 설정과 기타 정보를 동적으로 저장하고 검색할 수 있는 기능입니다. 프로젝트 속성 창의 설정 탭에서 편집할 수 있으며 자세한 내용은 MSDN응용 프로그램 설정을 참고하시기 바랍니다. 이 책에서는 이 부분은 별도로 다루지 않습니다.

 

AssemblyInfo.cs

using System.Reflection;

using System.Runtime.CompilerServices;

using System.Runtime.InteropServices;

 

// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.

// 어셈블리와 관련된 정보를 수정하려면

// 특성 값을 변경하십시오.

[assembly: AssemblyTitle("FirstApp")]

[assembly: AssemblyDescription("")]

[assembly: AssemblyConfiguration("")]

[assembly: AssemblyCompany("")]

[assembly: AssemblyProduct("FirstApp")]

[assembly: AssemblyCopyright("Copyright ©  2015")]

[assembly: AssemblyTrademark("")]

[assembly: AssemblyCulture("")]

 

// ComVisible false 설정하면 어셈블리의 형식이 COM 구성 요소에

// 표시되지 않습니다. COM에서 어셈블리의 형식에 액세스하려면

// 해당 형식에 대해 ComVisible 특성을 true 설정하십시오.

[assembly: ComVisible(false)]

 

// 프로젝트가 COM 노출되는 경우 다음 GUID typelib ID 나타냅니다.

[assembly: Guid("09f8dd0a-b5af-4e26-9e7b-ebea619044b1")]

 

// 어셈블리의 버전 정보는 다음 가지 값으로 구성됩니다.

//

//      버전

//      버전

//      빌드 번호

//      수정 버전

//

// 모든 값을 지정하거나 아래와 같이 '*' 사용하여 빌드 번호 수정 버전이 자동으로

// 지정되도록 있습니다.

// [assembly: AssemblyVersion("1.0.*")]

[assembly: AssemblyVersion("1.0.0.0")]

[assembly: AssemblyFileVersion("1.0.0.0")]

 

솔루션 탐색기 프로젝트 노드의 참조 노드


[그림 1.6] 참조 노드

 

 참조 노드에서는 응용 프로그램에서 참조해 사용하는 어셈블리(확장자 dll)를 표시합니다.

 

 기본적으로 참조 추가한 것 중에서 System System.Windows.Forms는 필수적으로 참조하여야 Windows Forms 응용 프로그램을 작성할 수 있습니다.

 

 System에서는 string, int, object 등의 기본 형식을 포함하여 가장 기본적인 것들을 정의하고 있는 어셈블리입니다.

 

 System.Windows.Forms 에서는 Form 클래스를 비롯하여 다양한 UI 컨트롤 클래스 등을 정의하고 있는 어셈블리입니다.

 

 개발자는 프로젝트에 필요하면 컨텍스트 메뉴(마우스를 우측 클릭하였을 때 나타나는 메뉴)를 통해 개발자가 정의한 어셈블리를 참조 추가할 수 있습니다.

 

참조 노드의 컨텍스트 메뉴


[그림 1.7] 참조 노드의 컨텍스트 메뉴

 

 참조 추가 창에서는 시스템에 등록 상태의 .NET 어셈블리와 COM, 프로젝트, 찾아보기, 최근에 사용한 파일 탭을 선택하여 원하는 어셈블리를 참조 추가할 수 있습니다.

 

참조 추가 창

[그림 1.8] 참조 추가 창

 

Form1.cs  노드

[그림 1.9] Form1.cs  노드

 

 Form1.cs 노드를 펼쳐보면 Form1.cs 파일과 Form1.Designer.cs 파일로 구성합니다. Form1.cs  파일은 개발자가 구현하기 위한 소스 파일입니다. 자식 컨트롤을 배치하거나 속성 지정 및 이벤트 핸들러를 등록하면 마법사에 의해 코드를 추가하는 부분은 Form1.Designer.cs 파일입니다.

 

Form1.cs

using System.Windows.Forms;

namespace FirstApp

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

    }

}

 

 

 

using System.Windows.Forms;

 Form 클래스를 비롯한 UI 컨트롤 클래스들은 System.Windows.Forms 네임 스페이스에 만들어져 있습니다. 이들을 사용하기 위해 필요한 using 구문입니다.

 

namespace FirstApp

{

 C#의 모든 코드는 특정 네임 스페이스 공간 속에 존재해야 합니다. 기본적인 네임 스페이스는 프로젝트 이름으로 만들어집니다.

    public partial class Form1 : Form

    {

 자동으로 만들어진 Form1 클래스는 기반 클래스 Form에서 파생한 클래스입니다. Form 클래스에는 다양한 속성과 메서드 및 이벤트 핸들러를 제공합니다.

        public Form1()

        {

            InitializeComponent();

 생성자 메서드의 InitializeComponet 메서드는 Form1의 화면 배치 및 속성 지정, 이벤트 핸들러 등의 작업을 수행하는 곳입니다. 실제 메서드는 Form1.Designer.cs 파일에 있으며 개발자가 직접 수정할 일은 것이 없습니다.

 

 주의할 점은 Form1 개체를 생성하면서 해야 할 일을 InitializeComponent 메서드 호출보다 앞쪽에 배치하지 말라는 것입니다. InitailizeComponent 메서드에서 폼 속성 및 자식 컨트롤 배치 등의 작업을 수행하기 때문입니다.

        }

    }

}

 

 

Form1.Designer.cs

namespace FirstApp

{

    partial class Form1

    {

        /// <summary>

        /// 필수 디자이너 변수입니다.

        /// </summary>

        private System.ComponentModel.IContainer components = null;

        /// <summary>

        /// 사용 중인 모든 리소스를 정리합니다.

        /// </summary>

        /// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>

        protected override void Dispose(bool disposing)

        {

            if (disposing && (components != null))

            {

                components.Dispose();

            }

            base.Dispose(disposing);

        }

        #region Windows Form 디자이너에서 생성한 코드

        /// <summary>

        /// 디자이너 지원에 필요한 메서드입니다.

        /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.

        /// </summary>

        private void InitializeComponent()

        {

            this.components = new System.ComponentModel.Container();

            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

            this.Text = "Form1";

        }

        #endregion

    }

}

 

 개발자는 특별한 일이 없다면 Form1.Designer.cs 파일의 내용을 수정할 필요는 없습니다. [디자인] 창에서 개발자가 컨트롤을 배치하거나 속성 지정 및 이벤트 핸들러를 등록하였을 때 마법사에 의해 자동으로 만들어주는 코드입니다.

 

namespace FirstApp

{

    partial class Form1

    {

        private System.ComponentModel.IContainer components = null;

 componets는 구성 요소들을 보관하는 컬렉션으로 Form1을 구성하는 디자이너 필수 요소입니다.

        protected override void Dispose(bool disposing)

        {

 Form1 개체가 소멸하면서 해제해야 할 것이 있을 때 수행하는 코드입니다.

            if (disposing && (components != null))

            {

                components.Dispose();

 만약 입력 인자로 전달받은 dispoing 변수가 true이면서 componets null이 아니면 components를 구성하는 요소들을 해제합니다.

            }

            base.Dispose(disposing);

 그리고 기반 형식인 Form Dispose 메소드를 호출하여 자원을 해제합니다.

        }

 

        private void InitializeComponent()

        {

 Form1 개체를 생성하면서 속성을 지정하거나 자식 컨트롤을 생성하고 이벤트 핸들러 등을 등록하는 코드들로 구성하는 메서드입니다.

            this.components = new System.ComponentModel.Container();

            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

            this.Text = "Form1";

        }

    }

}

 

 Program.cs 파일에는 진입점 클래스와 진입점 Main 정적 메서드가 있습니다.

 

Program.cs

using System;

using System.Windows.Forms;

namespace FirstApp

{

    static class Program

    {

        /// <summary>

        /// 해당 응용 프로그램의 진입점입니다.

        /// </summary>

        [STAThread]

        static void Main()

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new Form1());

        }

    }

}

 Program.cs 파일도 개발자에 의해 특별히 작성할 일은 없습니다. 앞으로 이 책에서는 Program.cs 파일에 관해 특별히 설명하는 일은 없습니다.

 

using System;

using System.Windows.Forms;

namespace FirstApp

{

    static class Program

    {

        [STAThread]

 단일 스레드에서 안전함을 명시하는 Attribute 입니다. 폼과 컨트롤은 생성한 스레드가 아닌 다른 스레드에 의해 속성 등을 변경하면 크로스 스레드 문제를 야기합니다. 이는 비동기적인 프로그래밍 요소에 의해 폼이나 컨트롤의 속성 등을 변경하였을 때 자원 경쟁 문제에 따른 교착상태(DeadLock) 등에 빠지는 것을 방지하기 위한 것입니다.

        static void Main()

        {

            Application.EnableVisualStyles();

 응용 프로그램에서 비주얼 스타일을 사용할 수 있게 합니다. 비주얼 스타일에는 색이나 글꼴처럼 운영 체제 테마를 구성하는 다양한 시각적 요소들로 구성합니다.

            Application.SetCompatibleTextRenderingDefault(false);

 자식 컨트롤들의 랜더링할 때 응용 프로그램의 기본값으로 설정합니다. 입력 인자에 따라 랜더링에 사용하는 클래스가 달라집니다. 입력 인자가 true일 때는 텍스트 랜더링에 Graphics 클래스를 사용하고 false이면 TextRender 클래스를 사용합니다.

            Application.Run(new Form1());

 Form1 개체를 생성하여 화면에 띄워주고 Form1 창이 닫힐 때 반환합니다. 실제 진입점 Main 메서드에서 제일 중요한 부분입니다.

        }

    }

}

 

1. 2 Form 속성

 

 Windows Forms 응용 프로그램을 만들 때 Form 이나 컨트롤의 속성을 설정하거나 가져오기 등의 작업을 수행할 때가 많습니다.

 

 Form의 속성에는 배경 색상이나 폰트처럼 시각적인 모양이나 창의 스타일 등의 다양한 것들로 구성하고 있습니다. 그리고 Microsoft Visual Studio 에서는 속성 창을 통해 손쉽게 편집할 수 있는 기능을 제공하고 있습니다. 물론 개발자가 코드 상에서 속성 값을 설정하거나 가져오는 코드를 작성할 수도 있습니다.

 

속성 창

[그림 1.10] 속성 창

 

 [메뉴]=>[보기]=>[속성 창] 을 선택하면 속성 창이 뜹니다. 개발자는 Form의 속성과 자식 컨트롤의 속성이나 이벤트 핸들러를 등록할 때 속성 창을 사용할 수 있습니다.


속성 창의 컨트롤

[그림 1.11] 속성 창의 컨트롤

 

 속성 창은 솔루션 탐색기에서 선택한 노드에 따라 구성 요소가 바뀝니다. [그림 1.11]은 솔루션 탐색기에서 Form1.cs 노드를 선택하였을 때의 속성 창의 일부입니다.

 

 속성 창에는 콤보 박스(1)에서 자신이 원하는 개체를 선택할 수 있습니다. 현재는 자식 컨트롤을 배치하지 않았기 때문에 Form1 개체만 항목에 존재합니다.

 

 속성 창에는 속성(4), 이벤트 핸들러(5), 속성 페이지(6)를 편집할 수 있습니다. 속성 페이지는 솔루션 탐색기에서 프로젝트 노드나 솔루션 노드를 선택하였을 때만 나오며 폼과 관련이 없으므로 설명을 생략할게요.

 

 속성 창에서 속성 버튼이나 이벤트 핸들러 버튼을 선택하였을 때 종류 별로 배치(2)하거나 알파벳 순으로 배치(3)할 수 있습니다.

 

속성 창의 다양한 모습

[그림 1.12] 속성 창의 다양한 모습

 

 

속성명

기본값

설명

(Name)

Form1

개체를 참조하는 변수 이름

AcceptButton

null

엔터를 쳤을 때 동작하는 버튼

AccessibleDescription

string.Empty

접근성 클라이언트에서 기본 동작

AccessibleName

string.Empty

접근성 클라이언트에서 이름

AccessibleRole

Default

접근성 클라이언트에서 컨트롤 타입

AllowDrop

False

마우스로 드래그 드롭을 허용할 지 여부

AutoScaleMode

Font

자동 크기 조절 모드

AutoScroll

False

자동 스크롤 여부

AutoScrollMargin

0,0

자동 스크롤 여백(width, height)

AutoScrollMinSize

0,0

자동 스크롤 최소 크기(width,height)

AutoSize

False

AutoSizeMod에 따라 자동 크기 조절

AutoSizeMode

GrowOnly

자동 크기 조정 모드

AutoValidate

상속값

자동 유효성 검사 모드

BackColor

Contorl

배경 색상

BackgroundImage

null

배경 이미지

BackgroudImageLayout

Tile

배경 이미지 배치

CancelButton

null

ESC 키를 눌렀을 때 동작하는 버튼

CausesValidation

True

포키스가 왔을 때 유효성 검사

ContextMenuStrip

null

컨텍스트 메뉴

ControlBox

True

폼의 캡션 표시줄에 컨트롤 상자 표시

Cursor

Default

커서

DoubleBuffered

False

그리기에 이중 버퍼링 사용

Enabled

True

사용자와 상호 작용 가능

Font

굴림,9pt

폰트

ForeColor

ControlText

전경 색상

FormBorderStyle

Sizable

폼의 테두리 스타일

HelpButton

False

폼의 캡션 표시줄에 도움말 버튼 표시

Icon

(기본값)

아이콘

ImeMode

NoContol

입력기 모드

IsMdiContainer

False

다중 문서 인터페이스의 컨테이너

KeyPreview

False

컨트롤에 키 이벤트 전달 전에 수신

Location

(0,0)

좌상단 좌표(X,Y)

MainMenuStrip

null

메인 메뉴

MaximizeBox

True

폼의 캡션 표시줄에 최대화 버튼

MaximumSize

(0,0)

최대화크기(width,height)

(0,0)은 제한 없음

MinimizeBox

True

폼의 캡션 표시줄에 최소화 버튼

MinimumSize

(0,0)

최소화 크기(width,height)

Opacity

1.0(100%)

투명도

Padding

(0,0,0,0)

컨트롤의 안쪽 여백

(Left,Top,Right,Bottom)

RightToLeft

No

오른쪽에서 왼쪽으로 쓰는 글꼴 사용

RightToLeftlayout

False

오른쪽에서 왼쪽으로 배치

ShowIcon

True

캡션 표시줄에 아이콘 표시

ShowInTaskbar

True

폼이 작업 표시줄에 표시

Size

(300,300)

폼의 크기(width, height)

SizeGripStyle

Auto

 

StartPosition

기본위치

폼을 띄울 때 시작 위치

Tag

null

태그(자유롭게 사용)

Text

자동부여

폼의 캡션 줄에 표시할 타이틀

TopMost

False

최상위 윈도우

TransparencyKey

 

폼의 투명하게 보이게 할 색상

UseWaitCursor

False

대기 커서를 사용

WindowState

Normal

폼을 최소화,최대화, 보통 크기 여부

[ 1.1] Form 의 속성(속성 창에 나타난 것)

 

 개발자가 속성 창을 통해 속성을 지정하면 마법사에 의해 Form1.Designer.cs 파일에 개발자가 지정한 속성으로 설정하는 코드를 작성합니다. 이와 같은 편의 기능은 개발자가 논리적인 작업에 집중할 수 있게 도와주기 위함입니다.


1. 3 Form 이벤트

 

 폼 개체가 포커스를 소유할 때 키보드를 누르거나 마우스를 누르는 등의 작업을 수행하면 .NET Framework에서는 등록한 이벤트 핸들러를 호출합니다. 개발자는 폼 개체에 특정 이벤트가 발생할 때 수행할 이벤트 핸들러를 등록하고 수행할 코드를 작성할 수 있습니다.

 

 속성 창의 이벤트 버튼을 통해 이벤트 핸들러를 등록하거나 코드 상에서 직접 이벤트 핸들러를 등록할 수 있습니다. 속성 창의 이벤트 버튼을 통해 이벤트 핸들러를 등록하면 등록하는 코드는 [].Designer.cs 파일에 마법사가 자동으로 작성해 줍니다. 그리고 이벤트가 발생할 때 처리할 코드를 작성하는 이벤트 핸들러는 [].cs 파일에 작성해 줍니다. 개발자는 [].cs 파일에 이벤트 핸들러 내부에 수행할 코드를 작성합니다.

 

1.3.1 실습 - 배경 색 바꾸기

 

 마우스를 클릭할 때마다 배경 색상이 빨강=>파랑=>빨강=>... 순으로 바뀌는 응용 프로그램을 만들어 봅시다.

 

 먼저 Form1 클래스의 멤버 필드로 어떤 배경색상으로 표시해야 할 지 판단하기 위한 변수를 선언합시다.

public partial class Form1 : Form

{

    bool toggle;

    public Form1()

     {

        InitializeComponent();

     }

}

 

 그리고 속성 창의 이벤트 버튼을 눌른 후에 Load 이벤트 핸들러를 등록하세요. 개체를 생성하여 창을 띄워지면 Load 이벤트 핸들러를 수행합니다. 따라서 폼을 초기화할 작업이 있으면 Load 이벤트 핸들러를 추가하여 작업하세요.

 

 Form1.Designer.cs 파일의 InitializeComponent 메서드를 확인하면 Load 이벤트 핸들러를 등록하는 코드가 자동으로 작성한 것을 있습니다.

private void InitializeComponent()

{

    ...중략...

    this.Load += new System.EventHandler(this.Form1_Load);

    ...중략...

}

 

 그리고 Form1.cs 파일에는 Load 이벤트 핸들러인 Form1_Load 메서드가 만들어진 것을 있습니다.

private void Form1_Load(object sender, System.EventArgs e)

{

}

 

  프로그램에서는 폼을 Load 때와 마우스 클릭할 때마다 배경 색을 설정해야 합니다. 이를 위해 배경 색을 설정하는 메서드를 추가한 후에 Load 이벤트 핸들러에 이를 호출하는 코드를 추가하세요.

private void Form1_Load(object sender, System.EventArgs e)

{

    SetBackColor();

}

 

private void SetBackColor()

{

    if (toggle)

    {

        BackColor = Color.Blue;

    }

    else

    {

        BackColor = Color.Red;

    }

}

 

 그리고 속성 창에 이벤트 항목 중에 MouseClick 이벤트 핸들러를 등록합니다. 마찬가지로 마법사에 의해 Form1.Designer.cs 파일의 InitializeComponent 메서드에는 이벤트 핸들러를 등록하는 코드가 자동 추가한 것을 확인할 있습니다.

 

 this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseClick);

 

 그리고 Form1.cs 파일에 이벤트 핸들러 메서드가 만들어 것을 있습니다. 여기에서는 toggle 값을 true=>false, false=>true 변경하기 위해 ^ 연산자를 사용합시다.

private void Form1_MouseClick(object sender, MouseEventArgs e)

{

    toggle ^= true;

    SetBackColor();

}

 

 실행하여 확인해 보면 클릭할 때마다 배경색이 바뀌는 것을 확인할 있습니다.

 

 

Form1.cs

using System.Windows.Forms;

using System.Drawing;

namespace FirstApp

{

    public partial class Form1 : Form

    {

        bool toggle;

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, System.EventArgs e)

        {

            SetBackColor();

        }

        private void SetBackColor()

        {

            if (toggle){    BackColor = Color.Blue;    }

            else{    BackColor = Color.Red;    }

        }

        private void Form1_MouseClick(object sender, MouseEventArgs e)

        {           

            toggle ^= true;

            SetBackColor();

        }

    }

}

 

 

 

1.3.2 Form 이벤트

 

 다음은 Form의 이벤트 목록입니다.

 

이벤트명

설명

Activated

활성화 시

AutoSizeChanged

AutoSize 속성 변경 시

AutoValidateChanged

AutoValidate 속성 변경 시

BackColorChanged

BackColor 속성 변경 시

BackgroundImageChanged

BackgroundImage 속성 변경 시

BackgroudImageLayoutChanged

BackgroundImageLayout 속성 변경 시

BindingContextChanged

BinidngContext 속성 변경 시

CausesValidationChanged

CausesValidation 속성 변경 시

ChangeUICues

포커스나 키보드 UI 큐가 변경 시

Click

클릭 시

ClientSizeChanged

ClientSize 속성 변경 시

ContextMenuStripChanged

ContextMenuStrip 속성 변경 시

ControlAdded

ControlCollection에 컨트롤 추가 시

ControlRemoved

ControlCollection에 컨트롤 제거 시

CursorChanged

Cursor 속성 변경 시

Deactive

비활성화 시

DockChanged

Dock  속성 변경 시

DoubleClick

더블 클릭 시

DragDrop

끌어서 놓기 작업 완료 시

DragEnter

끌어서 놓기에서 범위 안으로 들어올 시

DragLeave

끌어서 놓기에서 범위 밖으로 나갈 시

DragOver

끌어서 놓기에서 범위 안에서 이동 시

EnabledChanged

Enabled 속성 변경 시

Enter

포커스가 들어오기 시작할 시

FontChanged

Font 속성 변경 시

ForeColorChanged

ForeColor 속성 변경 시

FormClosed

폼이 닫힌 후

FormClosing

폼이 닫히기 전

GiveFreedback

끌기 잡업을 수행하는 동안

HelpButtonClicked

도움말 단추를 클릭 시

HelpRequested

사용자가 도움말을 요청 시

ImeModeChanged

ImeMode 속성 변경 시

InputLanguageChanged

입력 언어 변경 후

InputLanguageChanging

입력 언어 변경하려고 시도할 시

KeyDown

키를 누를 때

KeyPress

키를 누를 때

KeyUp

키를 눌렀다 떼었을 때

Layout

자식 컨트롤의 위치가 변경 시

Leaver

포커스가 벗어날 시

Load

폼이 처음으로 표시하기 전

LocationChanged

Location 속성 변경 시

MaximizedBoundsChanged

MaximizedBounds 속성 변경 시

MaximumSizeChanged

MaximumSize 속성 변경 시

MdiChildActive

MDI 자식 폼이 활성화 시

MinimumSizeChanged

MinimumSize 속성 변경 시

MouseCaptureChanged

마우스 캡쳐를 잃을 때

MouseClick

마우스로 클릭 시

MouseDoubleClick

마우스로 더블 클릭 시

MouseDown

마우스를 눌렀을 때

MouseEnter

마우스 포인터가 들어올 때

MouseHover

마우스 포인터가 위에 있을 때

MouseLeave

마우스 포인터가 나갈 때

MouseMove

마우스 포인터가 이동할 때

MouseUp

마우스를 눌렀다가 떼었을 때

Move

이동할 때

PaddingChanged

Padding 속성 변경 시

Paint

컨트롤을 다시 그릴 시

ParentChanged

Parent 속성 변경 시

PreviewKeyDown

컨트롤에서 키늘 눌렀을 때 KeyDown 이벤트 전

QueryAccessibilityHelp

접근성 클라이언트에 도움말을 제공할 시

QueryContinueDrag

끌어서 놓기 작업 중

(끌어서 놓기 작업 취소 여부를 결정하기 위함)

RegionChanged

Region 속성 변경 시

Resize

크기 조정 시

ResizeBegin

크기 조정 모드로 들어갈 시

ResizeEnd

크기 조정 모드를 벗어날 시

RightToLeftChanged

RightToLeft 속성 변경 시

RightToLeftLayoutChanged

RightToLeftLayoutChanged 속성 변경 시

Scroll

스크롤 시

Shown

처음 표시할 때

SIzeChanged

Size 속성 변경 시

StyleChanged

Style 속성 변경 시

SystemColorsChanged

SystemColors 속성 변경 시

TextChanged

Text 속성 변경 시

Validated

유효성 검사 완료 후

Validating

유효성 검사 진행 시

VisibleChanged

Visible 속성 변경 시

[1.2] Form 의 이벤트(속성 창에 나타난 것)

 

반응형