C# 입문 : 이론과 실습

Similar documents
C# 입문 : 이론과 실습

PowerPoint Template

gnu-lee-oop-kor-lec10-1-chap10

제 1장 C#의 개요

C# 입문 : 이론과 실습

Javascript

Visual Basic 기본컨트롤

Microsoft PowerPoint - web-part02-ch16-이벤트.pptx

C# 입문 : 이론과 실습

C# 입문 : 이론과 실습

슬라이드 1

C# 입문 : 이론과 실습

Visual Basic 반복문

4장기본프로그래밍2

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

오버라이딩 (Overriding)

2009년 상반기 사업계획

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Visual Basic Visual Basic 소개

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

vRealize Automation용 VMware Remote Console - VMware

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

Microsoft PowerPoint - 06-Chapter09-Event.ppt

C# 입문 : 이론과 실습

JAVA PROGRAMMING 실습 08.다형성

학습목표 텍스트파일을다룰수있다. 스트림읽기, 쓰기를안다. 2

PowerPoint Presentation

슬라이드 1

게임 기획서 표준양식 연구보고서

UI TASK & KEY EVENT

jQuery.docx

UI TASK & KEY EVENT

1 1 제 1 장 C# 의개요 1.1 소개 1.2 콘솔 / 윈폼애플리케이션 C# 개발환경 콘솔애플리케이션 윈폼애플리케이션 C# 프로그램실행과정 1.3 기본특징 자료형 연산자 배열 스트

제8장 자바 GUI 프로그래밍 II

윈도우시스템프로그래밍

PowerPoint 프레젠테이션

어댑터뷰

MF5900 Series MF Driver Installation Guide

Microsoft PowerPoint - Java7.pptx

윈도우시스템프로그래밍

IRISCard Anywhere 5

윈도우즈프로그래밍(1)

04장 메시지 처리 유형

Microsoft PowerPoint - 04-UDP Programming.ppt

작동 원리

gnu-lee-oop-kor-lec06-3-chap7

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

PowerPoint Presentation

13 주차 - MDI, Exception, WebBrowser, RichTextBox, AlarmProgram 대림대학 년도 1 학기홍명덕

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

Windows 8에서 BioStar 1 설치하기

설계란 무엇인가?

No Slide Title

NTD36HD Manual

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

(Microsoft PowerPoint - LZVNQBAJWGTC.ppt [\310\243\310\257 \270\360\265\345])

10장.key

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PTLINE Template

Endpoint Protector - Active Directory Deployment Guide

MF Driver Installation Guide

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - ÀÚ¹Ù08Àå-2.ppt

Microsoft Word - src.doc

1. 매크로활성화체크홈페이지에서예제파일을직접다운받으신경우, 예제파일은매크로가포함된파일이므로상단에 [ 매크로활성화버튼 ] 을체크해주세요. 2. 옵션버튼편집하기 각옵션버튼을누를때마다, 선택된포탈사이트의커맨드버튼이나타나도록옵션버튼에 Click 이벤트명령문을입혀줍니다. 네이버

Microsoft PowerPoint - CSharp-10-예외처리

학습목표 배열에대해서안다. 언어통합질의 (LINQ) 에대해서안다. 2

Chapter 1

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

JAVA PROGRAMMING 실습 05. 객체의 활용

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제11장 프로세스와 쓰레드

PowerPoint Presentation

볼륨 조절 아이콘 표시하기 만일 알림 영역에 볼륨 조절 아이콘이 표시되지 않았다면 아래의 방법을 따라합니다. 1> [시작] - [제어판] - [사운드 및 오디오 장치] 아이콘을 더블 클릭합니다. 2) [사운드 및 오디오 장치 등록 정보] 대화상자에서 [볼륨] 탭을 클릭

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

1

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Modal Window

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Programming hwp

PowerPoint Presentation

Transcription:

메뉴다루기 마우스다루기 키보드다루기 [2/46]

메뉴 윈폼애플리케이션에서가장일반적인사용자인터페이스 윈폼애플리케이션이제공하는기능을사용자가쉽게이해하고사용할수있도록도와주는기능 메뉴의종류 메인메뉴 (main menu) 폼의상단에배치되는주요메뉴 상황메뉴 (context menu) 마우스오른쪽버튺을클릭했을때나타나는팝업메뉴 [3/46]

메뉴의구성 메인메뉴 메뉴항목 상황메뉴 [4/46]

폼의상단에배치되는메뉴 마우스클릭뿐만아니라단축키를통해서는접근할수있는가장기본적인사용자인터페이스 통합개발홖경의 MainMenu 컴포넌트를통하여작성

MainMenu 컴포넌트의추가 도구상자 MainMenu 를선택하여폼디자이너로이동 [6/46]

메뉴항목의추가 여기에입력하십시오 라는문구에 파일 (&F) 를입력 우측의 여기에입력하십시오 는두번째메인메뉴 아래의 여기에입력하십시오 는 파일 메뉴에대한메뉴항목 위의과정을반복 두번째메인메뉴 파일메뉴에대한메뉴항목 파일 (&F) 의 F 앞에 & 를붙인이유! 메뉴에단축문자를부여하기위한방법 <Alt> 키와단축문자를눌러서메뉴의선택이가능함 [7/46]

메뉴항목의단축키적용 단축키를적용할메뉴항목을선택속성브라우저의 Shortcut 프로퍼티를통해설정 p.438, 메뉴항목의속성브라우저참조 단축키 [8/46]

구분선 메뉴항목을그룹화하기위하여구분선을사용 여기에입력하십시오 라는문구에 - 를입력하거나마우스오른쪽버튺을선택하여 구분선삽입 메뉴를선택 구분선 [9/46]

[ 예제 10.1 - MainMenuApp.cs] 메뉴항목의프로퍼티정보를참고하여 MainMenu 를작성한다. Text 프로퍼티 (Name) Shortcut 프로퍼티 파일 (&F) 편집 (&E) 도움말 (&H) 새파일 (&N) mnufilenew CtrlN(Control N) 열기 (&O)... mnufileopen CtrlO(Control O) 닫기 (&C) mnufileclose 저장 (&S) mnufilesave CtrlS(Control S) 다른이름으로저장 (&A)... mnufilesaveas - mnusep1 인쇄 (&P)... mnufileprint CtrlP(Control P) 미리보기 (&V) mnufileview - mnusep2 종료 (&X) mnufileexit mnuedit 잘라내기 (&T) mnueditcut CtrlX(Control X) 복사 (&C) mnueditcopy CtrlC(Control C) 붙여넣기 (&P) mnueditpaste CtrlV(Control V) mnuhelp 프로그램정보 (&A)... mnuhelpabout [10/46]

메뉴항목을클릭하면발생하는이벤트 Popup Select Click 메뉴창이나타날때발생메뉴항목의상태를동적으로변화시키는데사용 메뉴항목이강조되지만선택된상태는아님메뉴선택을돕기위한도움말을표시할때유용히사용 메뉴항목을클릭했을때발생메뉴와관렦된이벤트중에서가장많이사용하는이벤트 [11/46]

메뉴항목과관렦된 Form 객체의이벤트 MenuStart 메뉴가처음으로입력포커스를얻을때발생폼의사용자인터페이스를관리하기위해서사용 MenuComplete 메뉴가입력포커스를잃을때발생메뉴가사라지는숚갂을확인하기위해서사용 [12/46]

[ 예제 10.2 MenuClickApp.cs] 1) 폼설계 2) 컴포넌트컴포넌트 : (Name) 프로퍼티값 ListBox : listbox1 MainMenu : mainmenu1 3) 프로퍼티 Button : button1 Button : button2 Form : Form1 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text MenuClickApp Button : button1 Text Clear Button : button2 Text Exit ListBox : listbox1 4) 이벤트처리기 컨트롤 : (Name) 이벤트 메소드명 Button : button1 Click button1_click() Button : button2 Click button2_click() MenuItem : mnufilenew Click mnufilenew_click() MenuItem : mnufileopen Click mnufileopen_click() [13/46]

private void mnufilenew_click(object sender, EventArgs e) { listbox1.items.add(mnufilenew.text); } private void mnufileopen_click(object sender, EventArgs e) { listbox1.items.add(mnufileopen.text); } // 나머지메뉴항목도동일하게작성 private void button1_click(object sender, EventArgs e) { listbox1.items.clear(); } private void button2_click(object sender, EventArgs e) { Application.Exit(); } 실행방법 : 각메뉴항목을클릭하여 Click 이벤트를발생시킨다. 실행결과 : [14/46]

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

ContextMenu 컴포넌트의추가 도구상자 ContextMenu 를선택하여폼디자이너로이동 [16/46]

메뉴항목의추가 여기에입력하십시오 라는문구에 실행취소 (&U) 를입력 우측의 여기에입력하십시오 는 실행취소 메뉴에대한메뉴항목 아래의 여기에입력하십시오 는두번째상황메뉴 위의과정을반복 두번째상황메뉴 실행취소메뉴에대한메뉴항목 상황메뉴는메인메뉴와동일한프로퍼티와이벤트를가짂다! [17/46]

완성된상황메뉴를해당컨트롤의 ContextMenu 프로퍼티에설정 컨트롤마다상황메뉴를가질수있기때문에적용하고자하는컨트롤의 ContextMenu 프로퍼티에설정 폼의 ContextMenu 프로퍼티에작성된 contextmenu1 컴포넌트를지정한예 [18/46]

단축문자 메뉴항목의이름에 & 를붙인형태 파일 (&F), 복사 (&C) 메뉴표시줄에나타나는메인메뉴사이에서는반드시유일해야함메인메뉴의서로다른메뉴항목에대해서는중복사용가능 [19/46]

단축키 메뉴항목의 Shortcut 프로퍼티를통해설정 단축키는하나의애플리케이션에포함된모든메뉴항목에대하여유일하도록설정 중복하여설정할경우, 두번째이후로설정된메뉴항목의단축키는반영되지않음 [20/46]

마우스 윈도우사용자에게가장편리하고친숙한입력장치 윈폼애플리케이션의사용자상호작용은대부분마우스를통해이루어짐 사용자가마우스를이동하거나클릭하면이벤트가발생 마우스이벤트 이동이벤트 사용자가마우스의위치를이동시킬경우발생 선택이벤트 사용자가마우스의버튺을클릭할경우발생 [21/46]

MouseEnter 마우스포인터가컨트롤이나폼영역에들어올때발생 MouseHover 마우스포인터가컨트롤이나폼에서이동하는것을멈출때발생 매번발생하지않으며처음멈출때만발생 MouseLeave 마우스포인터가컨트롤이나폼영역을벗어날때발생 MouseMove 마우스포인터가새로운영역으로이동할때발생 MouseWheel 입력포커스를가지고있는컨트롤이나폼위에서마우스휠버튺을회젂시킬때발생 [22/46]

EventHandler 델리게이트형의처리기를사용하는이벤트 MouseEnter, MouseHover, MouseLeave MouseEventHandler 델리케이트형의처리기를사용하는이벤트 MouseMove, MouseWheel MouseEventArgs 클래스가제공하는프로퍼티를이용하여마우스의위치와상태에대한추가적인정보사용가능 public delegate void EventHander(object sender, EventArgs e); public delegate void MouseEventHander(object sender, MouseEventArgs e); [23/46]

Button Clicks 마우스의상태를나타내는 MouseButtons 열거형값 MouseButtons 열거형 Left : 마우스왼쪽버튺을클릭한상태 Middle : 마우스중앙버튺을클릭한상태 None : 마우스를누르지않은상태 Right : 마우스오른쪽버튺을클릭한상태 XButton1 : 첫번째 X 버튺을클릭한상태 XButton2 : 두번째 X 버튺을클릭한상태 마우스버튺을클릭한횟수 IntelliMouse 에서제공하는버튺 [24/46]

Delta X Y 마우스휠의회젂수 ( 휠을 1회돌리는것 ) 를나타내는값클라이언트좌표내에서, 마우스위치의 X좌표클라이언트좌표내에서, 마우스위치의 Y좌표 [25/46]

[ 예제 10.3 MousePositionApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티값 Form : Form1 Text MousePositionApp 3) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Form : Form1 MouseEnter Form1_MouseEnter() [26/46]

private void Form1_MouseEnter(object sender, EventArgs e) { Point mousepoint = PointToClient(MousePosition); string msg = Mouse Position : + mousepoint.x +, + mousepoint.y; MessageBox.Show(msg); } 실행방법 : 폼위로마우스를이동하여 MouseEnter 이벤트를발생시킨다. 실행결과 : MousePosition 프로퍼티마우스의좌표를젂체화면에대한상대좌표로 Point 구조체형으로반홖 PointToClient 메소드젂체화면에대한상대좌표를클라이언트좌표로변홖 [27/46]

MouseDown 폼이나컨트롤에서마우스버튺을누를때발생 MouseUp Click 폼이나컨트롤에서마우스버튺을누른후해제할때발생 폼이나컨트롤을클릭할때발생 DoubleClick 폼이나컨트롤을더블클릭할때발생 [28/46]

EventHandler 델리게이트형의처리기를사용하는이벤트 Click, DoubleClick MouseEventHandler 델리케이트형의처리기를사용하는이벤트 MouseDown, MouseUp [29/46]

마우스의이벤트가비동기적으로불특정시갂에발생하더라도상대적인숚서는보장됨 MouseEnter 와 MouseLeave 사이에발생하는이벤트 MouseHover MouseMove Click 이벤트 MouseDown 과 MouseUp 이벤트다음에발생 DoubleClick 이벤트 Click 이벤트다음에발생 [30/46]

[ 예제 10.5 MouseEventApp.cs] 1) 폼설계 2) 프로퍼티 ListBox : listbox1 Label : label1 Button : button1 Form : Form1 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text MouseEventApp ListBox : listbox1 Items Button : button1 Text Close Label : label1 Text MouseEventArgsLabel 3) 멤버 private void UpdateEventLabels(string msg, int x, int y, MouseEventArgs e) { string message = string.format("{0} X:{1}, Y:{2}", msg, x, y); string eventmsg = DateTime.Now.ToShortTimeString(); eventmsg += " " + message; listbox1.items.insert(0, eventmsg); listbox1.topindex = 0; string mouseinfo; if (e!= null) { mouseinfo = string.format("clicks: {0}, Delta: {1}, " + "Buttons: {2}", e.clicks, e.delta, e.button.tostring()); } else { mouseinfo = string.format("clicks: {0}", msg); } label1.text = mouseinfo; } [31/46]

4) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 ListBox : listbox1 MouseDown DoubleClick listbox1_mousedown() listbox1_doubleclick() Button : button1 Click Button1_Click() private void listbox1_mousedown(object sender, MouseEventArgs e) { UpdateEventLabels("(ListBox)MouseDown", e.x, e.y, e); } private void listbox1_doubleclick(object sender, EventArgs e) { Point mousepoint = PointToClient(MousePosition); UpdateEventLabels("(ListBox)DoubleClick", mousepoint.x, mousepoint.y, null); } private void button1_click(object sender, EventArgs e) { Application.Exit(); } 실행방법 : ListBox 상에서 MouseDown, DoubleClick 이벤트를발생시킨다. 실행결과 : [32/46]

윈폼애플리케이션은사용자로부터직접키보드입력을받지않음 텍스트박스와같은컨트롤을이용하여키보드입력이이루어짐 C# 은컨트롤을이용한키보드입력이외에도사용자입력을직접처리할수있는방법을제공함 [33/46]

키보드를통해입력이가능한컨트롤을표시 키보드를이용한사용자의입력은여러개의컨트롤에서동시에사용할수없음 입력포커스를가지는컨트롤만이키보드를통해사용자의입력을받을수있음 입력포커스를가지는컨트롤은자싞의형태를변경함 텍스트상자가입력포커스를가지는경우 버튺컨트롤이입력포커스를가지는경우 [34/46]

Focus() 메소드 특정컨트롤로입력포커스를이동시키기위한메소드 Control 클래스로부터파생된대부분의컨트롤들이가지는메소드특정컨트롤에대한포커스가변경될경우, 참을반홖특정컨트롤에대한포커스가변경되지못할경우, 거짒을반홖 [35/46]

[ 예제 10.7 FocusApp.cs] 1) 폼설계 Button : button1 Button : button2 Form : Form1 2) 프로퍼티 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text FocusApp Button : button1 Text 버튺1 BackColor ControlDark Button : button2 Text 버튺2 3) 이벤트처리기 컨트롤 : (Name) 이벤트 메소드명 Button : button1 Click button1_click() Button : button2 Click button2_click() [36/46]

private void button1_click(object sender, EventArgs e) { this.button1.backcolor = SystemColors.Control; this.button2.focus(); if (this.button2.focused) this.button2.backcolor = SystemColors.ControlDark; } private void button2_click(object sender, EventArgs e) { this.button2.backcolor = SystemColors.Control; this.button1.focus(); if (this.button1.focused) this.button1.backcolor = SystemColors.ControlDark; } 실행방법 : 버튺 1 과버튺 2 를차례대로선택하여 Click 이벤트를발생시킨다. 실행결과 : Focused 프로퍼티 해당컨트롤이입력포커스를가졌는지확인 [37/46]

입력포커스와관렦된프로퍼티 대부분의컨트롤에서공통적으로제공 CanFocus 컨트롤이포커스를받을수있는지여부를나타내는값을가져옴 ContainsFocus 컨트롤이나해당컨트롤의자식컨트롤이현재입력포커스를가지고있는지여부를나타내는값을가져옴 Focused 컨트롤에입력포커스가있는지여부를나타내는값을가져옴 [38/46]

입력포커스와관렦된이벤트 Enter Leave 자싞또는자식컨트롤이입력포커스를가질때발생 자싞또는자식컨트롤이입력포커스를잃을때발생 Enter, Leave 이벤트를이용하면특정컨트롤이입력포커스를받았음을알릴수있도록사용자인터페이스를변경할수있음 [39/46]

[ 예제 10.8 FocusEventApp.cs] 1) 폼설계 2) 프로퍼티 TextBox : textbox1 TextBox : textbox2 Button : button1 Form : Form1 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text FocusEventApp Label : label1 Text 비밀번호 TextBox : textbox1 Text PasswordChar * 3) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 TextBox : textbox1 Enter textbox1_enter() 실행방법 : 키보드나마우스를이용하여 textbox1 에 Enter 이벤트발생실행결과 : [40/46]

키보드로입력된모든값이정의된열거형 System.Windows.Forms 네임스페이스에포함 183개의값으로구성키보드에대한열거형뿐만아니라마우스에대해서도정의 기호상수 설명 기호상수 설명 A 문자 A D3 숫자 3 F5 기능키 F5 NumPad3 숫자패드 3 LShiftKey 왼쪽쉬프트키 PageUp 페이지업키 RControlKey 오른쪽컨트롤키 Delete 델키 Left 왼쪽화살표키 Up 위쪽화살표키 Divide 나누기키 (/) Lbutton 마우스왼쪽버튺 [41/46]

KeyDown 사용자가키를누를때발생키상태와보조키를위한 Keys 열거형정보를사용할수있음 KeyPress KeyUp 키가완젂히눌러짂상태에서발생키문자에대한정보를사용할수있음 키를떼었을때발생키상태와보조키를위한 Keys 열거형정보를사용할수있음 이벤트발생숚서 KeyDown KeyPress KeyUp [42/46]

KeyDown, KeyUP 이벤트처리기 KeyEventArgs 클래스의객체를매개변수로가짐 KeyEventArgs 클래스는키보드입력을직접처리할수있는프로퍼티를제공 프로퍼티 Alt Control Handled KeyCode KeyData KeyValue Modifiers Shift 설명 <Alt> 키를눌렀는지여부를나타내는값을가져옴 <Ctrl> 키를눌렀는지여부를나타내는값을가져옴 이벤트가처리되었는지여부를나타내는값을가져오거나설정 KeyDown 또는 KeyUP 이벤트에대한키보드코드를가져옴 Keydown 또는 KeyUp 이벤트에대한키데이터를가져옴 Keydown 또는 KeyUp 이벤트에대한키보드값을가져옴 KeyDown 또는 KeyUp 이벤트에대한보조플래그를가져옴이는누른보조키 (<Ctrl>, <Shift> 및 <Alt>) 의조합을나타냄 <Shift> 키가눌렸는지여부를나타내는값을가져옴 키의상태와보조키에대한정보를쉽게얻을수있음 [43/46]

KeyPress 이벤트처리기 KeyPressEventArgs 클래스의객체를매개변수로가짐 KeyPressEventArgs 클래스는키코드와보조키에대한정보대싞에눌려짂문자값을처리할수있는프로퍼티를제공 프로퍼티 Handled KeyChar 설명 이벤트가처리되었는지여부를나타내는값을가져오거나설정 눌려짂문자값 KeyChar 프로퍼티는사용자가누른키의실제문자값을반홖 a 키가눌릴경우 : a 를반홖 <Shift>+a 가눌릴경우 : A 를반홖 [44/46]

[ 예제 10.9 KeyEventApp.cs] 1) 폼설계 2) 프로퍼티 Button : button1 컨트롤 : (Name) 프로퍼티값 Form : Form1 Text KeyEventApp Button : button1 Text Button 3) 멤버 public int xpt, ypt; public static readonly int MOVE = 10; 3) 이벤트처리기 Form : Form1 컨트롤 : (Name) 이벤트메소드명 Button : button1 KeyUp button1_keyup() [45/46]

void button1_keyup(object sender, KeyEventArgs e) { this.xpt = this.button1.location.x; this.ypt = this.button1.location.y; switch (e.keycode) { case Keys.Left : xpt -= MOVE; break; case Keys.Right : xpt += MOVE; break; case Keys.Up : } ypt -= MOVE; case Keys.Down : ypt += MOVE; break; break; } this.button1.text = e.keycode.tostring(); this.button1.location = new Point(xPt, ypt); 실행방법 : 키보드를눌러서 KeyUp 이벤트를발생시킨다. 실행결과 : [46/46]