45
C# 이이이 이이 이이 이이이 이이이 이이이 이이이 이이이 10 10 제 제제 제 제제 / / 제제제 제제제 / / 제제제 제제제 제제제 제제제

메뉴 다루기 마우스 다루기 키보드 다루기

Embed Size (px)

DESCRIPTION

제 10 장 메뉴 / 마우스 / 키보드 다루기. 메뉴 다루기 마우스 다루기 키보드 다루기. 메뉴 다루기 [1/2]. 메뉴 윈폼 애플리케이션에서 가장 일반적인 사용자 인터페이스 윈폼 애플리케이션이 제공하는 기능을 사용자가 쉽게 이해하고 사용할 수 있도록 도와주는 기능 메뉴의 종류 메인메뉴 (main menu) 폼의 상단에 배치되는 주요 메뉴 상황메뉴 (context menu) 마우스 오른쪽 버튼을 클릭했을 때 나타나는 팝업 메뉴. 메뉴 다루기 [2/2]. 메뉴의 구성. 메인 메뉴. - PowerPoint PPT Presentation

Citation preview

Page 1: 메뉴 다루기  마우스 다루기  키보드 다루기

C# 이론과 실습

메뉴 다루기 마우스 다루기 키보드 다루기

제 제 10 10 장 메뉴장 메뉴 // 마우스마우스 // 키보드 다루기키보드 다루기

Page 2: 메뉴 다루기  마우스 다루기  키보드 다루기

[2/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메뉴 다루기 메뉴 다루기 [1/2][1/2]

메뉴메뉴 윈폼 애플리케이션에서 가장 일반적인 사용자 인터페이스윈폼 애플리케이션에서 가장 일반적인 사용자 인터페이스 윈폼 애플리케이션이 제공하는 기능을 사용자가 쉽게 윈폼 애플리케이션이 제공하는 기능을 사용자가 쉽게

이해하고 사용할 수 있도록 도와주는 기능이해하고 사용할 수 있도록 도와주는 기능

메뉴의 종류메뉴의 종류 메인메뉴 메인메뉴 (main menu)(main menu)

폼의 상단에 배치되는 주요 메뉴폼의 상단에 배치되는 주요 메뉴 상황메뉴 상황메뉴 (context menu)(context menu)

마우스 오른쪽 버튼을 클릭했을 때 나타나는 팝업 메뉴마우스 오른쪽 버튼을 클릭했을 때 나타나는 팝업 메뉴

Page 3: 메뉴 다루기  마우스 다루기  키보드 다루기

[3/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메뉴 다루기 메뉴 다루기 [2/2][2/2]

메뉴의 구성메뉴의 구성 메인 메뉴메인 메뉴

메뉴 항목메뉴 항목

상황 메뉴상황 메뉴

Page 4: 메뉴 다루기  마우스 다루기  키보드 다루기

[4/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메인 메뉴메인 메뉴

폼의 상단에 배치되는 메뉴폼의 상단에 배치되는 메뉴

마우스 클릭뿐만 아니라 단축키를 통해서는 접근할 마우스 클릭뿐만 아니라 단축키를 통해서는 접근할 수 있는 가장 기본적인 사용자 인터페이스수 있는 가장 기본적인 사용자 인터페이스

통합 개발 환경의 통합 개발 환경의 MainMenuMainMenu 컴포넌트를 통하여 컴포넌트를 통하여 작성작성

Page 5: 메뉴 다루기  마우스 다루기  키보드 다루기

[5/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메인 메뉴의 작성 메인 메뉴의 작성 [1/4][1/4]

MainMenuMainMenu 컴포넌트의 추가컴포넌트의 추가 【도구상자】【도구상자】【【 MainMenuMainMenu 】를 선택하여 폼 디자이너로】를 선택하여 폼 디자이너로

이동 이동

Page 6: 메뉴 다루기  마우스 다루기  키보드 다루기

[6/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메인 메뉴의 작성 메인 메뉴의 작성 [2/4][2/4]

메뉴 항목의 추가메뉴 항목의 추가 ““ 여기에 입력하십시오”라는 여기에 입력하십시오”라는

문구에 “파일문구에 “파일 (&F)”(&F)” 를 입력를 입력 우측의 “여기에 입력하십시우측의 “여기에 입력하십시

오”는 두 번째 메인 메뉴오”는 두 번째 메인 메뉴 아래의 “여기에 입력하십시아래의 “여기에 입력하십시

오”는 “파일” 메뉴에 대한 오”는 “파일” 메뉴에 대한 메뉴항목메뉴항목

위의 과정을 반복위의 과정을 반복

두 번째 메인 메뉴두 번째 메인 메뉴

파일 메뉴에 대한 메뉴 항목파일 메뉴에 대한 메뉴 항목

파일파일 (&F)(&F) 의 의 F F 앞에 앞에 && 를 붙인 이유 를 붙인 이유 !!메뉴에 단축문자를 부여하기 위한 방법메뉴에 단축문자를 부여하기 위한 방법<Alt><Alt> 키와 단축문자를 눌러서 메뉴의 선택이 가능함키와 단축문자를 눌러서 메뉴의 선택이 가능함

Page 7: 메뉴 다루기  마우스 다루기  키보드 다루기

[7/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메인 메뉴의 작성 메인 메뉴의 작성 [3/4][3/4]

메뉴 항목의 단축키 적용메뉴 항목의 단축키 적용 단축키를 적용할 메뉴 항목을 선택단축키를 적용할 메뉴 항목을 선택 속성 브라우저의 속성 브라우저의 ShortcutShortcut 프로퍼티를 통해 설정프로퍼티를 통해 설정

p.438, p.438, 메뉴 항목의 속성 브라우저 참조메뉴 항목의 속성 브라우저 참조

단축키단축키

Page 8: 메뉴 다루기  마우스 다루기  키보드 다루기

[8/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메인 메뉴의 작성 메인 메뉴의 작성 [4/4][4/4]

구분선구분선 메뉴 항목을 그룹화하기 위하여 구분선을 사용메뉴 항목을 그룹화하기 위하여 구분선을 사용 ““ 여기에 입력하십시오”라는 문구에 ‘여기에 입력하십시오”라는 문구에 ‘ -’-’ 를 입력하거나 마우스 를 입력하거나 마우스

오른쪽 버튼을 선택하여【구분선 삽입】메뉴를 선택오른쪽 버튼을 선택하여【구분선 삽입】메뉴를 선택

구분선구분선

Page 9: 메뉴 다루기  마우스 다루기  키보드 다루기

[9/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

[[ 예제 예제 10.1 - 10.1 - MainMenuApp.csMainMenuApp.cs] ] __________________________________________________________________메뉴 항목의 프로퍼티 정보를 참고하여 메뉴 항목의 프로퍼티 정보를 참고하여 MainMenuMainMenu 를 작성한다를 작성한다 ..

Text Text 프로퍼티프로퍼티 (Name)(Name) Shortcut Shortcut 프로퍼티프로퍼티

파일파일 (&F)(&F)                    

   mnuFilemnuFile   

새 파일새 파일 (&N)(&N) mnuFileNewmnuFileNew CtrlN(Control N)CtrlN(Control N)

열기열기 (&O)...(&O)... mnuFileOpenmnuFileOpen CtrlO(Control O)CtrlO(Control O)

닫기닫기 (&C)(&C) mnuFileClosemnuFileClose   

저장저장 (&S)(&S) mnuFileSavemnuFileSave CtrlS(Control S)CtrlS(Control S)

다른 이름으로 저장다른 이름으로 저장 (&A)...(&A)... mnuFileSaveAsmnuFileSaveAs   

-- mnuSep1mnuSep1   

인쇄인쇄 (&P)...(&P)... mnuFilePrintmnuFilePrint CtrlP(Control P)CtrlP(Control P)

미리 보기미리 보기 (&V)(&V) mnuFileViewmnuFileView   

-- mnuSep2mnuSep2   

종료종료 (&X)(&X) mnuFileExitmnuFileExit   

편집편집 (&E)(&E)      

   mnuEditmnuEdit   

잘라내기잘라내기 (&T)(&T) mnuEditCutmnuEditCut CtrlX(Control X)CtrlX(Control X)

복사복사 (&C)(&C) mnuEditCopymnuEditCopy CtrlC(Control C)CtrlC(Control C)

붙여넣기붙여넣기 (&P)(&P) mnuEditPastemnuEditPaste CtrlV(Control V)CtrlV(Control V)

도움말도움말 (&H)(&H)  

   mnuHelpmnuHelp   

프로그램 정보프로그램 정보 (&A)...(&A)... mnuHelpAboutmnuHelpAbout   

Page 10: 메뉴 다루기  마우스 다루기  키보드 다루기

[10/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메뉴 항목의 이벤트 메뉴 항목의 이벤트 [1/2][1/2]

메뉴 항목을 클릭하면 발생하는 이벤트메뉴 항목을 클릭하면 발생하는 이벤트 PopupPopup

메뉴 창이 나타날 때 발생메뉴 창이 나타날 때 발생 메뉴 항목의 상태를 동적으로 변화시키는데 사용메뉴 항목의 상태를 동적으로 변화시키는데 사용

SelectSelect 메뉴항목이 강조되지만 선택된 상태는 아님메뉴항목이 강조되지만 선택된 상태는 아님 메뉴 선택을 돕기 위한 도움말을 표시할 때 유용히 사용메뉴 선택을 돕기 위한 도움말을 표시할 때 유용히 사용

ClickClick 메뉴 항목을 클릭했을 때 발생메뉴 항목을 클릭했을 때 발생 메뉴와 관련된 이벤트 중에서 가장 많이 사용하는 이벤트메뉴와 관련된 이벤트 중에서 가장 많이 사용하는 이벤트

Page 11: 메뉴 다루기  마우스 다루기  키보드 다루기

[11/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메뉴 항목의 이벤트 메뉴 항목의 이벤트 [2/2][2/2]

메뉴 항목과 관련된 메뉴 항목과 관련된 FormForm 객체의 이벤트객체의 이벤트 MenuStartMenuStart

메뉴가 처음으로 입력 포커스를 얻을 때 발생메뉴가 처음으로 입력 포커스를 얻을 때 발생 폼의 사용자 인터페이스를 관리하기 위해서 사용폼의 사용자 인터페이스를 관리하기 위해서 사용

MenuCompleteMenuComplete 메뉴가 입력 포커스를 잃을 때 발생메뉴가 입력 포커스를 잃을 때 발생 메뉴가 사라지는 순간을 확인하기 위해서 사용메뉴가 사라지는 순간을 확인하기 위해서 사용

Page 12: 메뉴 다루기  마우스 다루기  키보드 다루기

[12/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

[[ 예제 예제 10.2 – 10.2 – MenuClickApp.csMenuClickApp.cs] ] ________________________________________________________________

1) 1) 폼 설계 폼 설계 ([([ 예제 예제 10.1]10.1] 의 폼을 사용의 폼을 사용 ) 2) ) 2) 컴포넌트컴포넌트

3) 3) 프로퍼티프로퍼티

4) 4) 이벤트 처리기이벤트 처리기

ListBox : listBox1

Button : button1

Button : button2

Form : Form1

컴포넌트 컴포넌트 : (Name): (Name) 프로퍼티프로퍼티 값값

MainMenu : mainMenu1MainMenu : mainMenu1   

컨트롤 컨트롤 : (Name): (Name) 프로퍼티프로퍼티 값값

Form : Form1Form : Form1 TextText MenuClickAppMenuClickApp

Button : button1Button : button1 TextText ClearClear

Button : button2Button : button2 TextText ExitExit

ListBox : listBox1ListBox : listBox1

컨트롤 컨트롤 : (Name): (Name) 이벤트이벤트 메소드명메소드명

Button : button1Button : button1 ClickClick button1_Click()button1_Click()

Button : button2Button : button2 ClickClick button2_Click()button2_Click()

MenuItem : mnuFileNewMenuItem : mnuFileNew ClickClick mnuFileNew_Click()mnuFileNew_Click()

MenuItem : mnuFileOpenMenuItem : mnuFileOpen ClickClick mnuFileOpen_Click()mnuFileOpen_Click()

……

Page 13: 메뉴 다루기  마우스 다루기  키보드 다루기

[13/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

private void mnuFileNew_Click(object sender, EventArgs e) { private void mnuFileNew_Click(object sender, EventArgs e) { listBox1.Items.Add(mnuFileNew.Text); listBox1.Items.Add(mnuFileNew.Text); } } private void mnuFileOpen_Click(object sender, EventArgs e) { private void mnuFileOpen_Click(object sender, EventArgs e) { listBox1.Items.Add(mnuFileOpen.Text); listBox1.Items.Add(mnuFileOpen.Text); } } // // 나머지 메뉴 항목도 동일하게 작성 나머지 메뉴 항목도 동일하게 작성 private void button1_Click(object sender, EventArgs e) { private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); listBox1.Items.Clear(); } } private void button2_Click(object sender, EventArgs e) { private void button2_Click(object sender, EventArgs e) { Application.Exit(); Application.Exit(); } } ______________________________________________________________________________________________________________

실행 방법 실행 방법 : : 각 메뉴 항목을 클릭하여 각 메뉴 항목을 클릭하여 Click Click 이벤트를 발생시킨다이벤트를 발생시킨다 .. 실행 결과실행 결과 ::

Page 14: 메뉴 다루기  마우스 다루기  키보드 다루기

[14/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

상황 메뉴상황 메뉴

컨트롤 위에서 마우스의 오른쪽 버튼을 클릭하였을 때 컨트롤 위에서 마우스의 오른쪽 버튼을 클릭하였을 때 표시되는 팝업 메뉴표시되는 팝업 메뉴 현재 애플리케이션의 상태가 반영현재 애플리케이션의 상태가 반영 상황에 따라 독자적인 메뉴 항목을 가짐상황에 따라 독자적인 메뉴 항목을 가짐

Page 15: 메뉴 다루기  마우스 다루기  키보드 다루기

[15/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

상황 메뉴의 작성 상황 메뉴의 작성 [1/3][1/3]

ContextMenuContextMenu 컴포넌트의 추가컴포넌트의 추가 【도구상자】【도구상자】【【 ContextMenuContextMenu 】를 선택하여 폼 디자이】를 선택하여 폼 디자이

너로 이동 너로 이동

Page 16: 메뉴 다루기  마우스 다루기  키보드 다루기

[16/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

상황 메뉴의 작성 상황 메뉴의 작성 [2/3][2/3]

메뉴 항목의 추가메뉴 항목의 추가 ““ 여기에 입력하십시오”여기에 입력하십시오”

라는 문구에 “실행취소라는 문구에 “실행취소(&U)”(&U)” 를 입력를 입력

우측의 “여기에 우측의 “여기에 입력하십시오”는 “실행취입력하십시오”는 “실행취소” 메뉴에 대한 메뉴 항목소” 메뉴에 대한 메뉴 항목

아래의 “여기에 아래의 “여기에 입력하십시오”는 두 번째 입력하십시오”는 두 번째 상황 메뉴상황 메뉴

위의 과정을 반복위의 과정을 반복

실행취소 메뉴에 대한 메뉴 항목실행취소 메뉴에 대한 메뉴 항목

두 번째 상황 메뉴두 번째 상황 메뉴

상황 메뉴는 메인 메뉴와 동일한 프로퍼티와 이벤트를 가진다 상황 메뉴는 메인 메뉴와 동일한 프로퍼티와 이벤트를 가진다 !!

Page 17: 메뉴 다루기  마우스 다루기  키보드 다루기

[17/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

상황 메뉴의 작성 상황 메뉴의 작성 [3/3][3/3]

완성된 상황 메뉴를 해당 컨트롤의 완성된 상황 메뉴를 해당 컨트롤의 ContextMenuContextMenu 프로퍼티에 설정프로퍼티에 설정 컨트롤마다 상황 메뉴를 가질 수 있기 때문에 적용하고자 컨트롤마다 상황 메뉴를 가질 수 있기 때문에 적용하고자

하는 컨트롤의 하는 컨트롤의 ContextMenuContextMenu 프로퍼티에 설정프로퍼티에 설정 폼의 폼의 ContextMenuContextMenu 프로퍼티에 작성된 프로퍼티에 작성된 contextMenu1contextMenu1

컴포넌트를 지정한 예컴포넌트를 지정한 예

Page 18: 메뉴 다루기  마우스 다루기  키보드 다루기

[18/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메뉴 메뉴 - - 단축 문자와 단축키 단축 문자와 단축키 [1/2][1/2]

단축문자단축문자 메뉴항목의 이름에 메뉴항목의 이름에 && 를 붙인 형태를 붙인 형태

파일파일 (&F), (&F), 복사복사 (&C)(&C) 메뉴 표시줄에 나타나는 메인 메뉴 사이에서는 반드시 유일해야 함메뉴 표시줄에 나타나는 메인 메뉴 사이에서는 반드시 유일해야 함 메인 메뉴의 서로 다른 메뉴 항목에 대해서는 중복 사용 가능메인 메뉴의 서로 다른 메뉴 항목에 대해서는 중복 사용 가능

Page 19: 메뉴 다루기  마우스 다루기  키보드 다루기

[19/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

메뉴 메뉴 - - 단축 문자와 단축키 단축 문자와 단축키 [2/2][2/2]

단축키단축키 메뉴항목의 메뉴항목의 ShortcutShortcut 프로퍼티를 통해 설정프로퍼티를 통해 설정

단축키는 하나의 애플리케이션에 포함된 모든 메뉴 항목에 단축키는 하나의 애플리케이션에 포함된 모든 메뉴 항목에

대하여 유일하도록 설정대하여 유일하도록 설정

중복하여 설정할 경우중복하여 설정할 경우 , , 두 번째 이후로 설정된 메뉴 항목의 두 번째 이후로 설정된 메뉴 항목의

단축키는 반영되지 않음단축키는 반영되지 않음

Page 20: 메뉴 다루기  마우스 다루기  키보드 다루기

[20/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

마우스 다루기마우스 다루기

마우스마우스 윈도우 사용자에게 가장 편리하고 친숙한 입력장치윈도우 사용자에게 가장 편리하고 친숙한 입력장치 윈폼 애플리케이션의 사용자 상호작용은 대부분 마우스를 윈폼 애플리케이션의 사용자 상호작용은 대부분 마우스를

통해 이루어 짐통해 이루어 짐 사용자가 마우스를 이동하거나 클릭하면 이벤트가 발생사용자가 마우스를 이동하거나 클릭하면 이벤트가 발생

마우스 이벤트마우스 이벤트 이동 이벤트이동 이벤트

사용자가 마우스의 위치를 이동시킬 경우 발생사용자가 마우스의 위치를 이동시킬 경우 발생 선택 이벤트선택 이벤트

사용자가 마우스의 버튼을 클릭할 경우 발생사용자가 마우스의 버튼을 클릭할 경우 발생

Page 21: 메뉴 다루기  마우스 다루기  키보드 다루기

[21/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

마우스 이동 이벤트마우스 이동 이벤트 MouseEnterMouseEnter

마우스 포인터가 컨트롤이나 폼 영역에 들어올 때 발생마우스 포인터가 컨트롤이나 폼 영역에 들어올 때 발생 MouseHoverMouseHover

마우스 포인터가 컨트롤이나 폼에서 이동하는 것을 멈출 때 발생마우스 포인터가 컨트롤이나 폼에서 이동하는 것을 멈출 때 발생 매번 발생하지 않으며 처음 멈출 때만 발생매번 발생하지 않으며 처음 멈출 때만 발생

MouseLeaveMouseLeave 마우스 포인터가 컨트롤이나 폼 영역을 벗어날 때 발생마우스 포인터가 컨트롤이나 폼 영역을 벗어날 때 발생

MouseMoveMouseMove 마우스 포인터가 새로운 영역으로 이동할 때 발생마우스 포인터가 새로운 영역으로 이동할 때 발생

MouseWheelMouseWheel 입력포커스를 가지고 있는 컨트롤이나 폼 위에서 마우스 휠 입력포커스를 가지고 있는 컨트롤이나 폼 위에서 마우스 휠

버튼을 회전시킬 때 발생버튼을 회전시킬 때 발생

Page 22: 메뉴 다루기  마우스 다루기  키보드 다루기

[22/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

마우스 이동 이벤트 처리기마우스 이동 이벤트 처리기

EventHandlerEventHandler 델리게이트형의 처리기를 사용하는 델리게이트형의 처리기를 사용하는 이벤트이벤트 MouseEnter, MouseHover, MouseLeaveMouseEnter, MouseHover, MouseLeave

MouseEventHandlerMouseEventHandler 델리케이트형의 처리기를 델리케이트형의 처리기를 사용하는 이벤트사용하는 이벤트 MouseMove, MouseWheelMouseMove, MouseWheel MouseEventArgsMouseEventArgs 클래스가 제공하는 프로퍼티를 이용하여 클래스가 제공하는 프로퍼티를 이용하여

마우스의 위치와 상태에 대한 추가적인 정보 사용 가능마우스의 위치와 상태에 대한 추가적인 정보 사용 가능

public delegate void public delegate void EventHanderEventHander(object sender, EventArgs e);(object sender, EventArgs e);public delegate void public delegate void MouseEventHanderMouseEventHander(object sender, (object sender, MouseEventArgsMouseEventArgs e); e);

Page 23: 메뉴 다루기  마우스 다루기  키보드 다루기

[23/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

MouseEventArgs MouseEventArgs 클래스의 프로퍼티 클래스의 프로퍼티 [1/2][1/2]

ButtonButton 마우스의 상태를 나타내는 마우스의 상태를 나타내는 MouseButtonsMouseButtons 열거형 값열거형 값 MouseButtonsMouseButtons 열거형열거형

LeftLeft : : 마우스 왼쪽 버튼을 클릭한 상태마우스 왼쪽 버튼을 클릭한 상태 MiddleMiddle : : 마우스 중앙 버튼을 클릭한 상태마우스 중앙 버튼을 클릭한 상태 NoneNone : : 마우스를 누르지 않은 상태마우스를 누르지 않은 상태 RightRight : : 마우스 오른쪽 버튼을 클릭한 상태마우스 오른쪽 버튼을 클릭한 상태 XButton1XButton1 : : 첫 번째 첫 번째 XX 버튼을 클릭한 상태버튼을 클릭한 상태 XButton2XButton2 : : 두 번째 두 번째 XX 버튼을 클릭한 상태버튼을 클릭한 상태

ClicksClicks 마우스 버튼을 클릭한 횟수마우스 버튼을 클릭한 횟수

IntelliMouseIntelliMouse에서 제공하는 버튼에서 제공하는 버튼

Page 24: 메뉴 다루기  마우스 다루기  키보드 다루기

[24/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

MouseEventArgs MouseEventArgs 클래스의 프로퍼티 클래스의 프로퍼티 [2/2][2/2]

DeltaDelta 마우스 휠의 회전수마우스 휠의 회전수 (( 휠을 휠을 11 회 돌리는 것회 돌리는 것 )) 를 나타내는 값를 나타내는 값

XX 클라이언트 좌표 내에서클라이언트 좌표 내에서 , , 마우스 위치의 마우스 위치의 XX 좌표좌표

YY 클라이언트 좌표 내에서클라이언트 좌표 내에서 , , 마우스 위치의 마우스 위치의 YY 좌표좌표

Page 25: 메뉴 다루기  마우스 다루기  키보드 다루기

[25/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

[[ 예제 예제 10.3 – 10.3 – MousePositionApp.csMousePositionApp.cs] _______________________________________________] _______________________________________________

1) 1) 폼 설계폼 설계

2) 2) 프로퍼티프로퍼티

3) 3) 이벤트 처리기이벤트 처리기

컨트롤 컨트롤 : (Name): (Name) 프로퍼티프로퍼티 값값

Form : Form1Form : Form1 TextText MousePositionAppMousePositionApp

컨트롤 컨트롤 : (Name): (Name) 이벤트이벤트 메소드명메소드명

Form : Form1Form : Form1 MouseEnterMouseEnter Form1_MouseEnter()Form1_MouseEnter()

Page 26: 메뉴 다루기  마우스 다루기  키보드 다루기

[26/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

실행 방법 실행 방법 : : 폼 위로 마우스를 이동하여 폼 위로 마우스를 이동하여 MouseEnter MouseEnter 이벤트를 발생시킨다이벤트를 발생시킨다 .. 실행 결과실행 결과 ::

private void Form1_MouseEnter(object sender, EventArgs e) { private void Form1_MouseEnter(object sender, EventArgs e) { Point mousePoint = Point mousePoint = PointToClient(MousePosition)PointToClient(MousePosition); ; string msg = “Mouse Position : ” + mousePoint.X + “, ” string msg = “Mouse Position : ” + mousePoint.X + “, ”                                                                           + mousePoint.Y; + mousePoint.Y; MessageBox.Show(msg);MessageBox.Show(msg);}}______________________________________________________________________________________________________________

MousePositionMousePosition 프로퍼티프로퍼티 마우스의 좌표를 전체화면에 대한 상대좌표로 마우스의 좌표를 전체화면에 대한 상대좌표로 PointPoint 구조체 형으로 반환구조체 형으로 반환

PointToClientPointToClient 메소드메소드 전체화면에 대한 상대좌표를 클라이언트 좌표로 변환전체화면에 대한 상대좌표를 클라이언트 좌표로 변환

Page 27: 메뉴 다루기  마우스 다루기  키보드 다루기

[27/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

마우스 선택 이벤트마우스 선택 이벤트

MouseDownMouseDown 폼이나 컨트롤에서 마우스 버튼을 누를 때 발생폼이나 컨트롤에서 마우스 버튼을 누를 때 발생

MouseUpMouseUp 폼이나 컨트롤에서 마우스 버튼을 누른 후 해제할 때 발생폼이나 컨트롤에서 마우스 버튼을 누른 후 해제할 때 발생

ClickClick 폼이나 컨트롤을 클릭할 때 발생폼이나 컨트롤을 클릭할 때 발생

DoubleClickDoubleClick 폼이나 컨트롤을 더블 클릭할 때 발생폼이나 컨트롤을 더블 클릭할 때 발생

Page 28: 메뉴 다루기  마우스 다루기  키보드 다루기

[28/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

마우스 선택 이벤트 처리기마우스 선택 이벤트 처리기

EventHandlerEventHandler 델리게이트형의 처리기를 사용하는 델리게이트형의 처리기를 사용하는

이벤트이벤트 Click, DoubleClickClick, DoubleClick

MouseEventHandlerMouseEventHandler 델리케이트형의 처리기를 델리케이트형의 처리기를

사용하는 이벤트사용하는 이벤트 MouseDown, MouseUpMouseDown, MouseUp

Page 29: 메뉴 다루기  마우스 다루기  키보드 다루기

[29/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

마우스 이벤트의 발생 순서마우스 이벤트의 발생 순서

마우스의 이벤트가 비동기적으로 불특정 시간에 마우스의 이벤트가 비동기적으로 불특정 시간에

발생하더라도 상대적인 순서는 보장됨발생하더라도 상대적인 순서는 보장됨 MouseEnterMouseEnter 와 와 MouseLeaveMouseLeave 사이에 발생하는 이벤트사이에 발생하는 이벤트

MouseHoverMouseHover MouseMoveMouseMove

ClickClick 이벤트이벤트 MouseDownMouseDown 과 과 MouseUpMouseUp 이벤트 다음에 발생이벤트 다음에 발생

DoubleClickDoubleClick 이벤트이벤트 ClickClick 이벤트 다음에 발생이벤트 다음에 발생

Page 30: 메뉴 다루기  마우스 다루기  키보드 다루기

[30/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

[[ 예제 예제 10.5 – 10.5 – MouseEventApp.csMouseEventApp.cs] _________________________________________________] _________________________________________________

1) 1) 폼 설계폼 설계 2) 2) 프로퍼티프로퍼티

3) 3) 멤버멤버

Form : Form1

Button : button1

Label : label1

ListBox : listbox1컨트롤 컨트롤 : (Name): (Name) 프로퍼티프로퍼티 값값

Form : Form1Form : Form1 TextText MouseEventAppMouseEventApp

ListBox : listBox1ListBox : listBox1 ItemsItems

Button : button1Button : button1 TextText CloseClose

Label : label1Label : label1 TextText MouseEventArgsLabelMouseEventArgsLabel

private void UpdateEventLabels(string msg, int x, int y, MouseEventArgs e) { private void UpdateEventLabels(string msg, int x, int y, MouseEventArgs e) { string message = string.Format("{0} X:{1}, Y:{2}", msg, x, y); string message = string.Format("{0} X:{1}, Y:{2}", msg, x, y); string eventMsg = DateTime.Now.ToShortTimeString(); string eventMsg = DateTime.Now.ToShortTimeString(); eventMsg += " " + message; eventMsg += " " + message; listBox1.Items.Insert(0, eventMsg); listBox1.Items.Insert(0, eventMsg); listBox1.TopIndex = 0; listBox1.TopIndex = 0; string mouseInfo; string mouseInfo; if (e != null) { if (e != null) { mouseInfo = string.Format("Clicks: {0}, Delta: {1}, " +  "Buttons: {2}",mouseInfo = string.Format("Clicks: {0}, Delta: {1}, " +  "Buttons: {2}", e.Clicks, e.Delta, e.Button.ToString()); e.Clicks, e.Delta, e.Button.ToString());         } else { mouseInfo = string.Format("Clicks: {0}", msg); } } else { mouseInfo = string.Format("Clicks: {0}", msg); }         label1.Text = mouseInfo;label1.Text = mouseInfo;} }

Page 31: 메뉴 다루기  마우스 다루기  키보드 다루기

[31/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

4) 4) 이벤트 처리기이벤트 처리기

컨트롤 컨트롤 : (Name): (Name) 이벤트이벤트 메소드명메소드명

ListBox : listBox1ListBox : listBox1MouseDownMouseDown listBox1_MouseDown()listBox1_MouseDown()

DoubleClickDoubleClick listBox1_DoubleClick()listBox1_DoubleClick()

Button : button1Button : button1 ClickClick Button1_Click()Button1_Click()

private void listBox1_MouseDown(object sender, MouseEventArgs e) { private void listBox1_MouseDown(object sender, MouseEventArgs e) {         UpdateEventLabels("(ListBox)MouseDown", e.X, e.Y, e); UpdateEventLabels("(ListBox)MouseDown", e.X, e.Y, e); } } private void listBox1_DoubleClick(object sender, EventArgs e) { private void listBox1_DoubleClick(object sender, EventArgs e) {         Point mousePoint = PointToClient(MousePosition); Point mousePoint = PointToClient(MousePosition);         UpdateEventLabels("(ListBox)DoubleClick", mousePoint.X, mousePoint.Y, null); UpdateEventLabels("(ListBox)DoubleClick", mousePoint.X, mousePoint.Y, null); } } private void button1_Click(object sender, EventArgs e) { private void button1_Click(object sender, EventArgs e) {         Application.Exit(); Application.Exit(); } }

실행 방법 실행 방법 : : ListBox ListBox 상에서 상에서 MouseDown, DoubleClick MouseDown, DoubleClick 이벤트를 발생시킨다이벤트를 발생시킨다 .. 실행 결과실행 결과 ::

______________________________________________________________________________________________________________

Page 32: 메뉴 다루기  마우스 다루기  키보드 다루기

[32/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

키보드 다루기키보드 다루기

윈폼 애플리케이션은 사용자로부터 직접 키보드 윈폼 애플리케이션은 사용자로부터 직접 키보드

입력을 받지 않음입력을 받지 않음 텍스트 박스와 같은 컨트롤을 이용하여 키보드 입력이 텍스트 박스와 같은 컨트롤을 이용하여 키보드 입력이

이루어짐이루어짐

C#C# 은 컨트롤을 이용한 키보드 입력 이외에도 사용자 은 컨트롤을 이용한 키보드 입력 이외에도 사용자

입력을 직접 처리할 수 있는 방법을 제공함입력을 직접 처리할 수 있는 방법을 제공함

Page 33: 메뉴 다루기  마우스 다루기  키보드 다루기

[33/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

입력 포커스 입력 포커스 [1/4][1/4]

키보드를 통해 입력이 가능한 컨트롤을 표시키보드를 통해 입력이 가능한 컨트롤을 표시 키보드를 이용한 사용자의 입력은 여러 개의 컨트롤에서 동시에 키보드를 이용한 사용자의 입력은 여러 개의 컨트롤에서 동시에

사용할 수 없음사용할 수 없음 입력 포커스를 가지는 컨트롤만이 키보드를 통해 사용자의 입력을 입력 포커스를 가지는 컨트롤만이 키보드를 통해 사용자의 입력을

받을 수 있음받을 수 있음 입력 포커스를 가지는 컨트롤은 자신의 형태를 변경함입력 포커스를 가지는 컨트롤은 자신의 형태를 변경함

텍스트 상자가 입력 포커스를 가지는 경우텍스트 상자가 입력 포커스를 가지는 경우

버튼 컨트롤이 입력 포커스를 가지는 경우버튼 컨트롤이 입력 포커스를 가지는 경우

Page 34: 메뉴 다루기  마우스 다루기  키보드 다루기

[34/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

입력 포커스 입력 포커스 [2/4][2/4]

Focus()Focus() 메소드메소드 특정 컨트롤로 입력 포커스를 이동시키기 위한 메소드특정 컨트롤로 입력 포커스를 이동시키기 위한 메소드

ControlControl 클래스로부터 파생된 대부분의 컨트롤들이 가지는 클래스로부터 파생된 대부분의 컨트롤들이 가지는

메소드메소드

특정 컨트롤에 대한 포커스가 변경될 경우특정 컨트롤에 대한 포커스가 변경될 경우 , , 참을 반환참을 반환

특정 컨트롤에 대한 포커스가 변경되지 못할 경우특정 컨트롤에 대한 포커스가 변경되지 못할 경우 , , 거짓을 거짓을

반환반환

Page 35: 메뉴 다루기  마우스 다루기  키보드 다루기

[35/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

[[ 예제 예제 10.7 – 10.7 – FocusApp.csFocusApp.cs] _______________________________________________________] _______________________________________________________

1) 1) 폼 설계폼 설계

2) 2) 프로퍼티프로퍼티

컨트롤 컨트롤 : (Name): (Name) 프로퍼티프로퍼티 값값

Form : Form1Form : Form1 TextText FocusAppFocusApp

Button : button1Button : button1TextText 버튼버튼 11

BackColorBackColor ControlDarkControlDark

Button : button2Button : button2 TextText 버튼버튼 22

Form : Form1

Button : button1

Button : button2

3) 3) 이벤트 처리기이벤트 처리기

컨트롤 컨트롤 : (Name): (Name) 이벤트이벤트 메소드명메소드명

Button : button1Button : button1 ClickClick button1_Click()button1_Click()

Button : button2Button : button2 ClickClick button2_Click()button2_Click()

Page 36: 메뉴 다루기  마우스 다루기  키보드 다루기

[36/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

private void button1_Click(object sender, EventArgs e) { private void button1_Click(object sender, EventArgs e) { this.button1.BackColor = SystemColors.Control; this.button1.BackColor = SystemColors.Control; this.button2.Focus(); this.button2.Focus(); if (this.button2.if (this.button2.FocusedFocused) ) this.button2.BackColor = SystemColors.ControlDark; this.button2.BackColor = SystemColors.ControlDark; } } private void button2_Click(object sender, EventArgs e) { private void button2_Click(object sender, EventArgs e) { this.button2.BackColor = SystemColors.Control; this.button2.BackColor = SystemColors.Control; this.button1.Focus(); this.button1.Focus(); if (this.button1.if (this.button1.FocusedFocused) ) this.button1.BackColor = SystemColors.ControlDark; this.button1.BackColor = SystemColors.ControlDark; }}

실행 방법 실행 방법 : : 버튼버튼 11 과 버튼과 버튼 22 를 차례대로 선택하여 를 차례대로 선택하여 Click Click 이벤트를 발생시킨다이벤트를 발생시킨다 ..실행 결과실행 결과 ::

______________________________________________________________________________________________________________

FocusedFocused 프로퍼티프로퍼티 해당 컨트롤이 입력 포커스를 가졌는지 확인해당 컨트롤이 입력 포커스를 가졌는지 확인

Page 37: 메뉴 다루기  마우스 다루기  키보드 다루기

[37/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

입력 포커스와 관련된 프로퍼티입력 포커스와 관련된 프로퍼티 대부분의 컨트롤에서 공통적으로 제공대부분의 컨트롤에서 공통적으로 제공 CanFocusCanFocus

컨트롤이 포커스를 받을 수 있는지 여부를 나타내는 값을 가져옴컨트롤이 포커스를 받을 수 있는지 여부를 나타내는 값을 가져옴

ContainsFocusContainsFocus 컨트롤이나 해당 컨트롤의 자식 컨트롤이 현재 입력 포커스를 컨트롤이나 해당 컨트롤의 자식 컨트롤이 현재 입력 포커스를

가지고 있는지 여부를 나타내는 값을 가져옴가지고 있는지 여부를 나타내는 값을 가져옴

FocusedFocused 컨트롤에 입력 포커스가 있는지 여부를 나타내는 값을 가져옴컨트롤에 입력 포커스가 있는지 여부를 나타내는 값을 가져옴

입력 포커스 입력 포커스 [3/4][3/4]

Page 38: 메뉴 다루기  마우스 다루기  키보드 다루기

[38/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

입력 포커스 입력 포커스 [4/4][4/4]

입력 포커스와 관련된 이벤트입력 포커스와 관련된 이벤트 EnterEnter

자신 또는 자식 컨트롤이 입력 포커스를 가질 때 발생자신 또는 자식 컨트롤이 입력 포커스를 가질 때 발생 LeaveLeave

자신 또는 자식 컨트롤이 입력 포커스를 잃을 때 발생자신 또는 자식 컨트롤이 입력 포커스를 잃을 때 발생

Enter, LeaveEnter, Leave 이벤트를 이용하면 특정 컨트롤이 입력 이벤트를 이용하면 특정 컨트롤이 입력 포커스를 받았음을 알릴 수 있도록 사용자 인터페이스를 변경할 수 포커스를 받았음을 알릴 수 있도록 사용자 인터페이스를 변경할 수 있음있음

Page 39: 메뉴 다루기  마우스 다루기  키보드 다루기

[39/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

[[ 예제 예제 10.8 – 10.8 – FocusEventApp.csFocusEventApp.cs] __________________________________________________] __________________________________________________

1) 1) 폼 설계폼 설계 2) 2) 프로퍼티프로퍼티

컨트롤 컨트롤 : (Name): (Name) 프로퍼티프로퍼티 값값

Form : Form1Form : Form1 TextText FocusEventAppFocusEventApp

Label : label1Label : label1 TextText 비밀번호비밀번호

TextBox : textBox1TextBox : textBox1TextText

PasswordCharPasswordChar **

3) 3) 이벤트 처리기이벤트 처리기

컨트롤 컨트롤 : (Name): (Name) 이벤트이벤트 메소드명메소드명

TextBox : textBox1TextBox : textBox1 EnterEnter textBox1_Enter()textBox1_Enter()

Form : Form1

TextBox : textBox1

TextBox : textBox2

Button : button1

private void textBox1_Click(object sender, EventArgs e) { private void textBox1_Click(object sender, EventArgs e) { MessageBox.Show(“MessageBox.Show(“비밀번호를 입력하세요”비밀번호를 입력하세요” ););}}

실행 방법 실행 방법 : : 키보드나 마우스를 이용하여 키보드나 마우스를 이용하여 textBox1textBox1 에 에 Enter Enter 이벤트 발생이벤트 발생실행 결과실행 결과 ::

______________________________________________________________________________________________________________

Page 40: 메뉴 다루기  마우스 다루기  키보드 다루기

[40/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

KeysKeys 열거형열거형

키보드로 입력된 모든 값이 정의된 열거형키보드로 입력된 모든 값이 정의된 열거형 System.Windows.FormsSystem.Windows.Forms 네임스페이스에 포함네임스페이스에 포함 183183 개의 값으로 구성개의 값으로 구성 키보드에 대한 열거형 뿐만 아니라 마우스에 대해서도 정의키보드에 대한 열거형 뿐만 아니라 마우스에 대해서도 정의

기호상수기호상수 설 명설 명 기호상수기호상수 설명설명

AA 문자 문자 AA D3D3 숫자 숫자 33

F5F5 기능키 기능키 F5F5 NumPad3NumPad3 숫자 패드 숫자 패드 33

LShiftKeyLShiftKey 왼쪽 쉬프트 키왼쪽 쉬프트 키 PageUpPageUp 페이지업 키페이지업 키

RControlKeyRControlKey 오른쪽 컨트롤 키오른쪽 컨트롤 키 DeleteDelete 델 키델 키

LeftLeft 왼쪽 화살표 키왼쪽 화살표 키 UpUp 위쪽 화살표 키위쪽 화살표 키

DivideDivide 나누기 키나누기 키 (/)(/) LbuttonLbutton 마우스 왼쪽 버튼마우스 왼쪽 버튼

Page 41: 메뉴 다루기  마우스 다루기  키보드 다루기

[41/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

키보드 이벤트키보드 이벤트 KeyDownKeyDown

사용자가 키를 누를 때 발생사용자가 키를 누를 때 발생 키 상태와 보조키를 위한 키 상태와 보조키를 위한 KeysKeys 열거형 정보를 사용할 수 있음열거형 정보를 사용할 수 있음

KeyPressKeyPress 키가 완전히 눌러진 상태에서 발생키가 완전히 눌러진 상태에서 발생 키 문자에 대한 정보를 사용할 수 있음키 문자에 대한 정보를 사용할 수 있음

KeyUpKeyUp 키를 떼었을 때 발생키를 떼었을 때 발생 키 상태와 보조키를 위한 키 상태와 보조키를 위한 KeysKeys 열거형 정보를 사용할 수 있음열거형 정보를 사용할 수 있음

이벤트 발생순서이벤트 발생순서 KeyDown KeyDown KeyPress KeyPress KeyUp KeyUp

Page 42: 메뉴 다루기  마우스 다루기  키보드 다루기

[42/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

키보드 이벤트 처리하기 키보드 이벤트 처리하기 [1/2][1/2]

KeyDownKeyDown, , KeyUPKeyUP 이벤트 처리기이벤트 처리기 KeyEventArgsKeyEventArgs 클래스의 객체를 매개 변수로 가짐클래스의 객체를 매개 변수로 가짐

KeyEventArgsKeyEventArgs 클래스는 키보드 입력을 직접 처리할 수 있는 클래스는 키보드 입력을 직접 처리할 수 있는 프로퍼티를 제공프로퍼티를 제공

키의 상태와 보조키에 대한 정보를 쉽게 얻을 수 있음키의 상태와 보조키에 대한 정보를 쉽게 얻을 수 있음

프로퍼티프로퍼티 설 명설 명

AltAlt <Alt><Alt> 키를 눌렀는지 여부를 나타내는 값을 가져옴키를 눌렀는지 여부를 나타내는 값을 가져옴

ControlControl <Ctrl><Ctrl> 키를 눌렀는지 여부를 나타내는 값을 가져옴키를 눌렀는지 여부를 나타내는 값을 가져옴

HandledHandled 이벤트가 처리되었는지 여부를 나타내는 값을 가져오거나 설정이벤트가 처리되었는지 여부를 나타내는 값을 가져오거나 설정

KeyCodeKeyCode KeyDown KeyDown 또는 또는 KeyUP KeyUP 이벤트에 대한 키보드 코드를 가져옴이벤트에 대한 키보드 코드를 가져옴

KeyData KeyData Keydown Keydown 또는 또는 KeyUp KeyUp 이벤트에 대한 키 데이터를 가져옴이벤트에 대한 키 데이터를 가져옴

KeyValue KeyValue Keydown Keydown 또는 또는 KeyUp KeyUp 이벤트에 대한 키보드 값을 가져옴이벤트에 대한 키보드 값을 가져옴

Modifiers Modifiers KeyDown KeyDown 또는 또는 KeyUp KeyUp 이벤트에 대한 보조 플래그를 가져옴이벤트에 대한 보조 플래그를 가져옴이는 누른 보조키이는 누른 보조키 (<Ctrl>, <Shift> (<Ctrl>, <Shift> 및 및 <Alt>)<Alt>) 의 조합을 나타냄의 조합을 나타냄

Shift Shift <Shift> <Shift> 키가 눌렸는지 여부를 나타내는 값을 가져옴키가 눌렸는지 여부를 나타내는 값을 가져옴

Page 43: 메뉴 다루기  마우스 다루기  키보드 다루기

[43/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

키보드 이벤트 처리하기 키보드 이벤트 처리하기 [2/2][2/2]

KeyPressKeyPress 이벤트 처리기이벤트 처리기 KeyPressEventArgsKeyPressEventArgs 클래스의 객체를 매개변수로 가짐클래스의 객체를 매개변수로 가짐

KeyPressEventArgsKeyPressEventArgs 클래스는 키 코드와 보조키에 대한 정보 클래스는 키 코드와 보조키에 대한 정보 대신에 눌려진 문자 값을 처리할 수 있는 프로퍼티를 제공대신에 눌려진 문자 값을 처리할 수 있는 프로퍼티를 제공

KeyCharKeyChar 프로퍼티는 사용자가 누른 키의 실제 문자 값을 반환프로퍼티는 사용자가 누른 키의 실제 문자 값을 반환 aa 키가 눌릴 경우 키가 눌릴 경우 : : ‘a’‘a’ 를 반환를 반환 <Shift>+a<Shift>+a 가 눌릴 경우 가 눌릴 경우 : : ‘A’‘A’ 를 반환를 반환

프로퍼티프로퍼티 설 명설 명

HandledHandled 이벤트가 처리되었는지 여부를 나타내는 값을 가져오거나 설정이벤트가 처리되었는지 여부를 나타내는 값을 가져오거나 설정

KeyCharKeyChar 눌려진 문자값눌려진 문자값

Page 44: 메뉴 다루기  마우스 다루기  키보드 다루기

[44/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습

[[ 예제 예제 10.9 – 10.9 – KeyEventApp.csKeyEventApp.cs] __________________________________________________] __________________________________________________

1) 1) 폼 설계폼 설계 2) 2) 프로퍼티프로퍼티

컨트롤 컨트롤 : (Name): (Name) 프로퍼티프로퍼티 값값

Form : Form1Form : Form1 TextText KeyEventAppKeyEventApp

Button : button1Button : button1 TextText ButtonButton

4) 4) 이벤트 처리기이벤트 처리기

Form : Form1

Button : button1

3) 3) 멤버멤버

public int xPt, yPt;public int xPt, yPt;public static readonly int MOVE = 10;public static readonly int MOVE = 10;

컨트롤 컨트롤 : (Name): (Name) 이벤트이벤트 메소드명메소드명

Button : button1Button : button1 KeyUpKeyUp button1_KeyUp()button1_KeyUp()

Page 45: 메뉴 다루기  마우스 다루기  키보드 다루기

[45/45]

제 10 장 메뉴 / 마우스 / 키보드 다루기C# 이론과 실습void button1_KeyUp(object sender, KeyEventArgs e) { void button1_KeyUp(object sender, KeyEventArgs e) { this.xPt = this.button1.Location.X; this.xPt = this.button1.Location.X; this.yPt = this.button1.Location.Y; this.yPt = this.button1.Location.Y; switch (e.KeyCode) { switch (e.KeyCode) { case Keys.Left : case Keys.Left : xPt -= MOVE;       break; xPt -= MOVE;       break; case Keys.Right : case Keys.Right :                         xPt += MOVE;       break; xPt += MOVE;       break;                 case Keys.Up : case Keys.Up :                         yPt -= MOVE;       break; yPt -= MOVE;       break;                 case Keys.Down : case Keys.Down :                         yPt += MOVE;       break; yPt += MOVE;       break;         } }         this.button1.Text = e.KeyCode.ToString(); this.button1.Text = e.KeyCode.ToString();         this.button1.Location = new Point(xPt, yPt); this.button1.Location = new Point(xPt, yPt); }}

실행 방법 실행 방법 : : 키보드를 눌러서 키보드를 눌러서 KeyUp KeyUp 이벤트를 발생시킨다이벤트를 발생시킨다 ..실행 결과실행 결과 ::

______________________________________________________________________________________________________________