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] 프로젝트 새로 만들기
[그림 1.2] 새 프로젝트 창 - 프로젝트 템플릿 선택
[그림 1.3] 생성한 프로젝트 초기 화면
[그림 1.4] FirstApp 응용 프로그램 실행 화면
프로젝트를 생성하면 [그림 1.3]과 같은 초기 화면이 나타납니다. 그리고 이 상태에서 실행(Ctrl + F5)하면 하나의 창이 뜨는 간단한 응용 프로그램이 동작합니다. 개발자가 코드를 작성한 부분이 없어 특별한 동작은 하지 않지만 가장 가벼운 형태의 윈도우즈 응용 프로그램이 만들어 진 것입니다.
이제 마법사에 의해 만들어진 것들이 무엇인지 살펴봅시다.
[메뉴]=>[보기]=>[솔루션 탐색기]를 선택하여 솔루션 탐색기 창을 보면 트리 형태로 솔루션 노드 자식으로 프로젝트 노드를 확인할 수 있습니다. 그리고 프로젝트 노드에는 Properties와 참조, Form1.cs, Program.cs 노드가 나타납니다.
[그림 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] 참조 추가 창
[그림 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 의 이벤트(속성 창에 나타난 것)
'프로그래밍 기술 > Windows Form 응용 프로그램' 카테고리의 다른 글
3. 2 실습: 다른 프로젝트에서 만든 컨트롤 사용하기 [Windows Forms 응용 프로그램] (0) | 2016.04.06 |
---|---|
3.1.3 Form1 구현 [Windows Forms 응용 프로그램] (0) | 2016.04.06 |
3.1.2 ColorSelectControl 정의 [Windows Forms 응용 프로그램] (0) | 2016.04.06 |
3.1.1 ColorChangeEventArgs 정의 [Windows Forms 응용 프로그램] (0) | 2016.04.06 |
3. 사용자 정의 컨트롤 [Windows Forms 응용 프로그램] (0) | 2016.04.06 |
TreeView 실습 [Windows Forms 응용 프로그램] (2) | 2016.04.05 |
ListView 실습 [Windows Forms 응용 프로그램] (0) | 2016.04.05 |
ComboBox, ListBox, CheckListBox 실습 [Windows Forms 실습] (0) | 2016.04.05 |
CheckBox와 RadioButton 사용 실습 [Windows Forms 응용 프로그램] (0) | 2016.04.05 |
2. 공용 컨트롤 , 동적으로 버튼 생성 [Windows Forms 응용 프로그램] (0) | 2016.04.05 |