Microsoft PowerPoint - hci2-lecture10.ppt [호환 모드]

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

(Microsoft PowerPoint - C#\260\355\261\3363\(WinForm\).ppt)

PowerPoint Template

Visual Basic 기본컨트롤

C# 입문 : 이론과 실습

Visual Basic 반복문

Javascript

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

오버라이딩 (Overriding)

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

C# 입문 : 이론과 실습

Microsoft PowerPoint - hci2-lecture8.ppt [호환 모드]

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

4장기본프로그래밍2

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

Microsoft PowerPoint - VB.NET_09.pptx

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

어댑터뷰

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

PowerPoint Presentation

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

UI TASK & KEY EVENT

Microsoft PowerPoint - 06-Body Data Class.pptx

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

Visual Basic Visual Basic 소개

2009년 상반기 사업계획

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

MVVM 패턴의 이해

<4D F736F F F696E74202D203039C0E520B4EBC8ADBBF3C0DA205BC8A3C8AF20B8F0B5E55D>

ISP and CodeVisionAVR C Compiler.hwp

UI TASK & KEY EVENT

슬라이드 1

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

Modal Window

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

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

기술문서 작성 C# 입문과맛보기 작성자 : 인천대학교 OneScore 김근호 Ⅰ. C# 이란무엇인가? p.1 Ⅱ. Hello World! p.3 Ⅲ. 메모장을만들어보자! p.4 가. 디자인 p.4 나. 소스코드 p

PowerPoint Presentation

윈도우시스템프로그래밍

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

C# 입문 : 이론과 실습

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

윈도우시스템프로그래밍

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

JAVA PROGRAMMING 실습 08.다형성

Programming hwp

C# 입문 : 이론과 실습

제11장 프로세스와 쓰레드

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

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

3ÆÄÆ®-14

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

윈도우시스템프로그래밍

Microsoft PowerPoint - e pptx

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

캐빈의iOS프로그램팁01

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

MF3010 MF Driver Installation Guide

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

문서의 제목 나눔고딕B, 54pt

(Microsoft PowerPoint - hci2-lecture12 [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - 07-C#-12-GDI+.ppt [호환 모드]

PowerPoint 프레젠테이션

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

Microsoft Word - src.doc

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

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

제 1장 C#의 개요

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

chap 5: Trees

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

윈도우시스템프로그래밍

04장 메시지 처리 유형

PowerPoint 프레젠테이션

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

MF5900 Series MF Driver Installation Guide

1

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

MySQL-.. 1

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

C# 입문 : 이론과 실습

쉽게 풀어쓴 C 프로그래밊

adfasdfasfdasfasfadf

Endpoint Protector - Active Directory Deployment Guide

untitled

4S 1차년도 평가 발표자료

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

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

- 이벤트의처리 <input type= button id= button1 value= 확인 /> <input type= button id= button2 value= 확인 /> 자바스크립트인경우 : document.getelementbyid( button1 ).oncl

API 매뉴얼

PowerPoint Presentation

C# 입문 : 이론과 실습

H3250_Wi-Fi_E.book

Microsoft PowerPoint - 03-Points.pptx

tiawPlot ac 사용방법

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

Transcription:

Overview C# Mouse, Keyboard, Menu, Dialogs, g, MDI 321190 2013 년가을학기 11/15/2013 박경신 마우스 (Mouse) 키보드 (Keyboard) 메뉴 (Menu) 도구모음 (Tool Bar) 상태표시줄 (Status Bar) 대화상자 (Dialogs) 사용자정의폼및컨트롤 (Custom Forms & Controls) 다중문서인터페이스 (Multiple Document Interface: MDI) 상속계층구조 System.Object System.Windows.Input.Mouse // 마우스 System.Windows.Input.Keyboard // 키보드 System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.Menu // 메뉴 System.Windows.Forms.ContextMenu // 컨텍스트메뉴 System.Windows.Forms.MainMenu // 메인메뉴 System.Windows.Forms.MenuItem // 메뉴항목 System.Windows.Forms.ScrollableControl ScrollableControl System.Windows.Forms.ToolStrip // 툴바스트립 System.Windows.Forms.BindingNavigator System.Windows.Forms.MenuStrip System.Windows.Forms.StatusStrip // 상태바스트립 System.Windows.Forms.ToolStripDropDown Mouse 마우스 (Mouse) 이벤트 폼이나컨트롤상에서마우스를클릭하거나이동등의행위를할경우에발생 MouseEventHandler 는마우스좌표를제공하며, 그외에는 EventHandler 사용 EventHandler 유형 MouseEnter 마우스커서가컨트롤영역으로들어올경우발생 MouseLeave 마우스커서가컨트롤영역을벗어날경우발생 MouseEventHandler 유형 MouseDown 마우스버튼을누를경우발생 MouseHover 마우스커서가일정기간이상컨트롤영역내에 머무를경우발생 MouseMove 마우스커서를움직일경우발생 MouseUp 마우스버튼을뗐을경우발생

// 폼에마우스궤적그리기 // 마우스를눌렀을때그리기시작 private void Form1_MouseDown(object sender, MouseEventArgs e) prevpos = new Point(e.X, e.y); isdrawing = true; // 마우스를계속움직이면선을그리기 private void Form1_MouseMove(object sender, MouseEventArgs e) if (isdrawing) Graphics g = CreateGraphics(); Point currpos = new Point(e.X, e.y); g.drawline(new Pen(Color.Red), prevpos, currpos); g.dispose(); prevpos = currpos; // 마우스를떼면더이상그리지않음 private void Form1_MouseUp(object sender, MouseEventArgs e) isdrawing = false; Keyboard 키보드 (Keyboard) 이벤트 KeyPress 이벤트는 ASCII 코드에해당하는키가눌렸을경우에발생 KeyPressEventHandler(Object sender, KeyPressEventArgs e) KeyPressEventArgs 속성 KeyChar 눌린키에대한 ASCII 코드반환 Handled KeyPress 이벤트가처리되었는지의여부를표시 Keyboard 키보드 (Keyboard) 이벤트 KeyDown, KeyUp 이벤트는수정자키 (Shift, Alt, Ct기 ) 정보제공 KeyEventHandler(Object sender, KeyEventArgs e) KeyEventArgs 속성 Alt Alt 키의눌림여부표시 Control Control 키의눌림여부표시 Shift Shift 키의눌림여부표시 Handled d 이벤트의처리여부표시 KeyCode 키에대한키코드값 (Keys 열거형 ) KeyData 수정자키를포함한키코드값을반환 KeyValue 키에대한키코드값 (int 형 ) Modifiers SupressKeyPress 눌린수정자키에대한 Keys 열거형값을반환 키이벤트를내부컨트롤에전달할지여부설정 // KeyPress 이벤트 private void Form1_KeyPress(object sender, KeyPressEventArgs e) label1.text = Key Pressed: + e.keychar; if (e.keychar == (char)27) this.close(); // ESC-key to exit the program // KeyDown 이벤트 private void Form1_KeyDown(object sender, KeyEventArgs e) label2.text = Alt: + (e.alt? Yes : No ) + \n + + Shift: + (e.shift? Yes : No ) + \n + + Control: + (e.control? Yes : No ) + \n + + KeyCode: + ekeycode+ e.keycode \n + + KeyData: + e.keydata + \n + + KeyValue: + e.keyvalue; // KeyUp 이벤트 private void Form1_KeyUp(object sender, KeyEventArgs e) label1.text = ; label2.text = ;

Menu, Tool Bar, Status Bar 메뉴 (Menu) Main Menu / MenuStrip MenuItem / ToolStripMenuItem Context t Menu / ContextMenuStrip tm 도구모음 (Tool Bar) ToolBar / ToolStrip ToolBarButton / ToolStripButton 상태표시줄 (Status Bar) StatusBar / StatusStrip StatusBarPanel / StatusStripItem Menu 메뉴 프로그램에서수행할수있는명령집합 계층적요소로구성된 user interface Main Menu ( 최상위메뉴 ) Menu bar / Top-Level item Menu Item ( 메뉴항목 ) 명령을수행하거나서브메뉴를가지는항목 Pop-up menu ( 하위메뉴 ) Drop-down menu/ Sub menu/child menu Main Menu Menu Item Pop-up menu 9 Menu Context Menu 작업영역에서자유롭게나타날수있는단축메뉴 System Menu 윈도우조작메뉴 Access Key( 선택키 ) 메뉴가열린상태에서메뉴항목선택키 Shortcut Key(Accelerator)( 단축키 ) 키조합을사용하여메뉴의명령을실행하는키 System Menu Access Key Shortcut Key Context Memu Main Menu Main Menu 폼의메뉴구조를나타내는컨테이너역할을하는클래스.NET Framework 2.0 에서 MenuStrip 컨트롤로버전향상 메뉴구조의개별메뉴명령 메뉴항목 (MenuItem) 들로구성 (MenuItems 속성 ) 각 MenuItem은응용프로그램의명령이나다른하위메뉴항목포함 폼에메인메뉴연결 Form의 Menu속성에 MainMenu를대입 폼의메인메뉴재사용 메인메뉴구조를다른폼에재사용시 CloneMenu 메소드로복사본을만들고메뉴항목을추가, 수정하여사용

Menu Item Menu Item MainMenu 또는 ContextMenu 내에표시되는개별항목.NET Framework 2.0 에서 ToolStripMenuItem 으로버전향상 주요속성 설명 Text 메뉴항목에표시되는문자열 (& 문자로선택키지정 ) Tag 메뉴항목과관련된정보 ( 사용자정의데이터 ) Checked 메뉴항목옆에확인표시 Shortcut 메뉴항목의단축키설정 (Shortcut 열거형 ) Shortcut.CtrlA~Shortcut.CtrlZ,Shortcut.F1~Shortcut.F12 MenuItems 하위메뉴를위한 MenuItem 컬랙션 Menu Item Menu Item 주요메소드 설명 MergeMenu() MDI 응용프로그램에서 MDI 부모의메뉴와자식폼의메 뉴를병합하여통합메뉴구조를생성 CloneMenu() 다른위치에서사용할 MenuItem의복사본생성 주요이벤트 Popup Select Click 설명메뉴표시전에발생되는이벤트메뉴항목위로마우스포인터를이동할때발생메뉴항목선택시발생 ContextMenu 컨텍스트메뉴 사용자가컨트롤또는폼의일정영역위에서마우스오른쪽단추를누르면표시되는메뉴.NET 2.0 에서 ContextMenuStrip 으로버전향상 ContextMenu를 Control에연결 ContextMenu 를표시할컨트롤또는폼의 ContextMenu 속성에 ContextMenu를대입 SubMenu SubMenu Drop-down 하위메뉴.NET 2.0에서 ToolStripDropDownMenu로버전향상 SubMenuItem 하위메뉴의항목.NET 2.0 에서 ToolStripDropDownItem 으로버전향상 주요속성, 메소드, 이벤트 Show() 메소드 ContextMenu를특정컨트롤의특정위치에보임 SourceControl 속성 ContextMenu가발생된컨트롤 Popup 이벤트 ContextMenu가표시될때발생되는이벤트

MenuStrip 을사용한메뉴구성 1. 도구상자에서 MenuStrip 을선택하여폼에배치 2. 메인메뉴형태의메뉴항목구성을위해폼의제목표시줄아래 여기에입력 에메뉴항목을입력하거나 [ 항목컬렉션편집기 ] 사용 (Items 속성 ) ToolStripMenuItem 의 DropDownItems 메뉴항목의하위메뉴에대한컬랙션 ToolStripMenuItem의 DropDownItems 컬랙션에메뉴항목추가 ToolStripMenuItem 의속성 주요속성 설명 HotKey 모든메뉴항목은핫키라고불리는 Alt+Shortcut을제공. 메뉴항목이름을지정할때핫키로쓰일문자앞에 (& 사용 ). 한글메뉴경우영문자를추가한후 & 사용. ShortcutKeys 단축키 Tag 메뉴항목에연결된값 ( 사용자정의데이터 ) Owner 메뉴항목의소유자설정및확인 Checked 체크표시여부설정 ContextMenuStrip 1. 도구상자에서 ContextMenuStrip 을선택하여폼에배치 2. ContextMenuStrip에메뉴항목등록 3. 메뉴항목에클릭이벤트핸들러구현 4. 폼의 ContextMenuStrip 속성값에 ContextMenu 설정

// MenuStrip 메인메뉴생성 MenuStrip menustrip1 = new MenuStrip(); // ToolStripMenuItem te 메뉴항목생성 ToolStripMenuItem filetoolstripmenuitem = new ToolStripMenuItem(); ToolStripMenuItem newtoolstripmenuitem = new ToolStripMenuItem(); ToolStripMenuItem closetoolstripmenuitem = new ToolStripMenuItem(); ToolStripMenuItem designtoolstripmenuitem = new ToolStripMenuItem(); ToolStripMenuItem colortoolstripmenuitem = new ToolStripMenuItem(); ToolStripMenuItem thicknesstoolstripmenuitem = new ToolStripMenuItem(); // 메뉴구분자생성 toolstripseparator1 = new ToolStripSeparator(); // MenuStrip에하위메뉴등록 menustrip1.items.addrange(new ToolStripItem[] filetoolstripmenuitem, lst i filetoolstripmenuitem, designtoolstripmenuitem); // filetoolstripmenuitem의속성설정, 하위메뉴등록 filetoolstripmenuitem.dropdownitems.addrange(new ToolStripItem[] newtoolstripmenuitem, toolstripseparator1, closetoolstripmenuitem); // closetoolstripmenuitem의텍스트설정, 이벤트핸들러등록 closetoolstripmenuitem.text = 닫기 (&X)"; // 메뉴창에서 ALT+X 키로실행가능 closetoolstripmenuitem.click += new System.EventHandler(closeToolStripMenuItem_Click); // designtoolstripmenuitem의하위메뉴등록및속성설정 designtoolstripmenuitem.dropdownitems.addrange(new ToolStripItem[] colortoolstripmenuitem, thicknesstoolstripmenuitem); // colortoolstripmenuitem 단축키설정, Tag, Text 설정, 이벤트핸들러등록 colortoolstripmenuitem.shortcutkeys ShortcutKeys = ((System.Windows.Forms.Keys) (Keys.Control Keys.C)); // CTRL+C 단축키 colortoolstripmenuitem.tag = "left"; colortoolstripmenuitem.text = 색 (&C)"; colortoolstripmenuitem.click += new System.EventHandler(this.colorToolStripMenuItem_Click); // 폼의컨트롤에 menustrip 등록 this.controls.add(this.menustrip1); ///////////////////////////////////////////////////////////////////////////////////////////// //close 메뉴항목클릭이벤트핸들러 프로그램종료 private void closetoolstripmenuitem_click(object sender, EventArgs e) this.close(); //color 메뉴항목들에대한이벤트핸들러 ColorDialog 사용 private void colortoolstripmenuitem_click(object sender, EventArgs e) if (colordialog1.showdialog() == DialogResult.OK) c = colordialog1.color; p.dispose(); p = new Pen(c, thickness); // ContextMenuStrip 생성 ContextMenuStrip contextmenustrip1= new ContextMenuStrip(this.components); // contextmenustrip1에메뉴항목들추가 contextmenustrip1.items.addrange(new ToolStripItem[] popupcolortoolstripmenuitem, lst popupthicknesstoolstripmenuitem); T i contextmenustrip1.name = "contextmenustrip1"; // ToolStripMenuItem 메뉴항목생성 ToolStripMenuItem popupcolortoolstripmenuitem = new ToolStripMenuItem(); ToolStripMenuItem popupthicknesstoolstripmenuitem = new ToolStripMenuItem(); ToolStripMenuItem popupthickness1toolstripmenuitem p p p = new ToolStripMenuItem(); ToolStripMenuItem popupthickness2toolstripmenuitem = new ToolStripMenuItem(); // 중간생략 // popupcolortoolstripmenuitem 메뉴항목에대한속성및이벤트핸들러등록 popupcolortoolstripmenuitem.name = "popupcolortoolstripmenuitem"; popupcolortoolstripmenuitem.text = 색 "; popupcolortoolstripmenuitem.click += new System.EventHandler(popupColorToolStripMenuItem_Click); // 폼에 ContextMenu 등록 private void InitializeComponent() // 중간생략 this.contextmenustrip = this.contextmenustrip1; ToolBar ToolBar 응용프로그램에서가장많이사용되는기능과명령에빠르게접근가능한도구모음명령버튼들의모임 응용프로그램메뉴구조의항목에해당하는버튼포함 Buttons 속성에이미지와텍스트로표현가능한버튼등록 (ImageList, ToolBarButton 이용 ) ButtonClick 이벤트로도구모음의명령버튼처리 ( 이벤트매개변수 (e.button) 를통하여선택된버튼확인 ) toolbar1_buttonclick(object sender,toolbarbuttonclickeventargs e) MessageBox.Show(e.Button.Text + "Button clicked, toolbar1_buttonclick ButtonClick");

ToolStrip ToolStrip 도구모음개체에대한컨테이너.NET Framework 2.0 에서 ToolBar의기능을향상시킨컨트롤 다양한컨트롤들로구성 ToolStripButton, ToolStripLabel, ToolStripSplitButton, ToolStripDropDownButton p,toolstripseparator, p ToolStripComboBox,ToolStripTextBox, ToolStripProgressBar ToolStrip을사용한도구모음구성방법 폼에 ToolStrip 배치 도구모음을구성하는버튼 (ToolStripButton) 등을추가 추가된버튼에이미지속성, 문자열속성, 클릭이벤트핸들러구현 //ToolStrip을사용한도구모음구성 ToolStrip toolstrip1 = new ToolStrip(); // 툴바버튼및콤보박스생성 toolstrip1.items.addrange(new ToolStripItem[] newtoolstripbutton, colortoolstripbutton, thicknesstoolstripbutoon,toolstripcombobox1); //newtoolstripbutton tton 속성및이벤트지정 newtoolstripbutton.image = ((System.Drawing.Image)(resources.GetObject("newToolStripButton.Image"))); newtoolstripbutton.text = New"; newtoolstripbutton.click += new System.EventHandler(newToolStripMenuItem_Click); // 메뉴항목클릭이벤트핸들러 //colortoolstripbutton 속성및이벤트지정 colortoolstripbutton.image = ((System.Drawing.Image)(resources.GetObject( colortoolstripbutton.image"))); colortoolstripbutton.text = Color"; colortoolstripbutton.click += new System.EventHandler(colorToolStripMenuItem_Click); // 메뉴항목클릭이벤트핸들러 // thicknesstoolstripbutton 속성지정생략 //toolstripcombobox1 속성및이벤트지정 toolstripcombobox1.items.addrange(new object[] 두께1, 두께2, 두께3, 두께4, 두께5 ); toolstripcombobox1.selectedindexchanged += new System.EventHandler(toolStripComboBox1_SelectedIndexChanged);// 콤보박스핸들러 // 폼에툴바연결 : 툴바의부모컨트롤로폼을지정또는폼의컨트롤에툴바추가 this.controls.add(toolstrip1); // 툴바의버튼클릭이벤트핸들러를메뉴항목클릭이벤트핸들러활용 private void newtoolstripmenuitem_click(object sender, EventArgs e) g.clear(color.white); // 툴바의콤보박스 SelectedIndexChanged 이벤트핸들러 private void toolstripcombobox1_selectedindexchanged(object sender, EventArgs e) switch (toolstripcombobox1.selectedindex) case 0: thickness = 1; break; case 1: thickness = 2; break; case 2: thickness = 3; break; case 3: thickness = 4; break; case 4: thickness = 5; break; p.dispose(); p = new Pen(c, thickness); StatusBar StatusBar 폼의창아래쪽에표시되는영역으로응용프로그램상태에대한다양한유형의정보를표시 상태를나타내는텍스트나아이콘이포함된상태표시줄패널또는프로세스가진행중임을애니메이션으로표시하는일련의아이콘포함가능 주요속성및이벤트 Panels 속성 상태바에표시되는각각텍스트또는아이콘을 StatusBarPanel t 개체로구성하여추가 ShowPanels 속성 False( 기본값 ) : 상태바에 Text 속성을단일메시지로표시 True : 상태바를여러패널로분할하여다양한유형의정보를표시 PanelClick 이벤트 StatusBar 컨트롤의 StatusBarPanel 개체를클릭할때발생

StatusStrip StatusStrip Form의현재상태에대한정보, 해당개체의구성요소또는응용프로그램내에서의개체동작과관련한컨텍스트정보를표시 일반적으로 StatusStrip 컨트롤은텍스트나아이콘또는둘모두를표시하는 ToolStripStatusLabel 개체로구성 추가적으로 ToolStripDropDownButton, ToolStripSplitButton, ToolStripProgressBar 컨트롤도포함가능 StatusStrip에패널추가 ToolStripItemCollection.AddRange ll ti 메소드를사용하거나디자인타임에 StatusStrip 항목컬렉션편집기를사용 // statusstrip 생성및추가할항목 (ProgressBar, Label) 생성 StatusStrip statusstrip1= new System.Windows.Forms.StatusStrip(); ToolStripProgressBar toolstripprogressbar1 = new System.Windows.Forms.ToolStripProgressBar(); ToolStripStatusLabel toolstripstatuslabel1 = new System.Windows.Forms.ToolStripStatusLabel(); // statusstrip1 에생성된항목들추가및속성설정, 이벤트핸들러등록 statusstrip1.items.addrange(new System.Windows.Forms.ToolStripItem[] toolstripstatuslabel1,toolstripprogressbar1); statusstrip1.text = "statusstrip1"; statusstrip1.itemclicked += new ToolStripItemClickedEventHandler(statusStrip1_ItemClicked); // toolstripprogressbar1 toolstripprogressbar1.minimum=0; //toolstripprogressbar1.value의초기값 toolstripprogressbar1.maximum=100; toolstripprogressbar1.step=20; //toolstripprogressbar1.performstep() 의진행값 toolstripprogressbar1.style = System.Windows.Forms.ProgressBarStyle.Continuous; // toolstripstatuslabel1 toolstripstatuslabel1.text = " 마우스위치 : xxx,yyy yyy"; // 마우스이동시마우스의위치값을 statusstrip1의첫번째항목에출력 private void frmmenu_mousemove(object MouseMove(object sender, MouseEventArgs e) if (statusstrip1.items.count > 0) statusstrip1.items[0].text = " 마우스포인터 : " + e.x + "," + e.y; //statusstrip 의항목을클릭하면클릭된항목의텍스트출력 private void statusstrip1_itemclicked(object sender, ToolStripItemClickedEventArgs e) StatusStrip statusstrip1 = (StatusStrip)sender; MessageBox.Show(e.ClickedItem.Text, " statusstrip1_itemclicked"); // 타이머이벤트발생시 toolstripprogressbar 의 step 증가처리 private void timer1_tick(object sender, EventArgs e) // 타이머이벤트발생시진행바의한 Step 씩처리 toolstripprogressbar1.performstep(); // toolstripprogressbar1.value 값이최대값보다크면최소값으로초기화 if (toolstripprogressbar1.value >= toolstripprogressbar1.maximum) toolstripprogressbar1.value = toolstripprogressbar1.minimum; Dialog 상속계층구조 System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.CommonDialog System.Windows.Forms.ColorDialog System.Windows.Forms.FileDialog // 색대화상자 // 파일대화상자 System.Windows.Forms.OpenFileDialog// 열기파일대화상자 System.Windows.Forms.SaveFileDialog // 저장파일대화상자 System.Windows.Forms.FontDialog // 폰트대화상자 System.Windows.Forms.PageSetupDialog // 페이지셋팅대화상자 System.Windows.Forms.PrintDialog // 프린트대화상자

Dialog 대화상자 (Dialog Box) 다양한컨트롤을포함하고있는일종의윈도우 사용자로부터입력을받거나정보를출력 정적, 버튼, 편집등다양한컨트롤들을배치하고관리하는윈도우 Dialog 메시지박스 (Message Box) 공통대화상자 (Common Dialog) 사용자정의대화상자 모드형대화상자 (Modal Dialog) - 대화상자를닫지않으면응용프로그램이더이상진행할수없음. 비모드형대화상자 (Modeless Dialog) - 대화상자를닫지않더라도응용프로그램이계속진행가능. 33 MessageBox MessageBox 사용자에게필요한정보와명령을제공하는작은대화상자 Show() 메소드 public static DialogResult Show ( string text ) 메시지와 [ 확인 ] 버튼을표시하는메시지상자 public static DialogResult Show ( string text, string caption ) 메시지와제목, [ 확인 ] 버튼을표시하는메시지상자 public static DialogResult Show ( string text, string caption, MessageBoxButtons buttons ) 메시지, 제목, 여러가지고유버튼들을표시하는메시지상자 public static DialogResult Show ( string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon ) 메시지, 제목, 버튼, 아이콘을표시하는메시지상자 MessageBox MessageBoxButtons MessageBox에표시할단추를정의하는상수 멤버 AbortRetryIgnore OK OKCancel YesNoCancel YesNo RetryCancel 설명중단, 재시도, 무시버튼표시확인버튼만표시확인과취소버튼표시예, 아니오, 취소버튼표시예와아니오버튼표시재시도, 취소버튼표시 35 36

MessageBox MessageBoxIcon MessageBox 에표시할정보를정의하는상수 멤버 MessageBox에표시할설명단추를정의하는상수 Exclamation, Warning Information None Question Error, Stop 아무런아이콘표시를하지않음 MessageBox MessageBox.Show() 메소드반환자 선택한버튼을 DialogResult 열거형값으로반환한다. 멤버설명 MessageBox에표시할정보를정의하는상수 Abort 중단버튼으로부터반환 Cancel 취소버튼으로부터반환 MessageBox 에표시할단추를정의하는상수 Ignore 무시버튼으로부터반환 No 아니오버튼으로부터반환 OK 확인버튼으로부터반환 Retry 다시시도버튼으로부터반환 Yes 예버튼으로부터반환 37 38 //MessageBox 사용예 DialogResult result = MessageBox.Show("OKCancel MessageBox 입니다 ", "MessageBox Test", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (result == DialogResult.OK ) MessageBox.Show("OK 버튼을눌렀습니다.", "DialogResult"); else MessageBox.Show("Cancel 버튼을눌렀습니다.", "DialogResult"); Common Dialog Common Dialog.NET framework에서제공하는일반적인대화상자 파일열기대화상자 (OpenFileDialog) 파일저장대화상자 (SaveFileDialog) l 색상대화상자 (ColorDialog) 폰트설정대화상자 (FontDialog) 페이지설정대화상자 (PageSetupDialog) 인쇄대화상자 (PrintDialog) 39

ColorDialog ColorDialog 색을선택하는일반대화상자 ShowDialog() 를호출하여대화상자를표시 Color 속성으로선택한색을가져오거나설정 AllowFullOpen 속성으로사용자지정색을정의할수있는지여부를설정 // ColorDialog 사용 ColorDialog colordialog1 = new ColorDialog(); colordialog1.allowfullopen l llo = true ; colordialog1.showhelp = true ; // 색상대화상자에서색을선택후확인버튼을누르면 // 선택한색을텍스트박스의글자색으로설정 if (colordialog1.showdialog() == DialogResult.OK) textbox1.forecolor = colordialog1.color; FontDialog FontDialog 설치되어있는글꼴을선택할수있는대화상자 Font 속성으로선택한글꼴을가져오거나지정 ShowColor 속성으로색상표표시여부설정 Color 속성으로선택한글꼴색상을가져오거나지정 // FontDialog 사용 FontDialog fontdialog1 = new FontDialog (); fontdialog1.showcolor = true; fontdialog1.font = textbox1.font; fontdialog1.color = textbox1.forecolor; if(fontdialog1.showdialog()!= DialogResult.Cancel ) textbox1.font = fontdialog1.font ; textbox1.forecolor = fontdialog1.color; FileDialog OpenFileDialog 파일을선택하는일반대화상자 SaveFileDialog 파일을저장하는일반대화상자 주요속성 FileName FileNames Filter DefaultExt InitialDirectory 설명파일대화상자에서선택한파일이름을포함하는문자열을가져오거나설정 (FullPath) 대화상자에서선택한모든파일의파일이름들대화상자에서 파일형식으로저장 또는 파일형식 상자에표시되는선택옵션을결정하는현재파일이름필터문자열을가져오거나설정 Text Document(*.txt) *.txt + All Files *.* All Image Files *.bmp;*.gif;*.jpg;*.png 기본확장명을가져오거나설정 파일대화상자가표시하는초기디렉토리를가져오거나설정 // OpenFileDialog를이용하여텍스트파일을열고텍스트박스에문자열읽어오기 OpenFileDialog opendialog1 = new OpenFileDialog(); // 현재디렉토리를초기값으로설정 opendialog1.initialdirectory = Directory.GetCurrentDirectory(); // 열기파일의필터설정 opendialog1.filter = "Text Document(*.txt) *.txt" + " All Files *.*"; // 열기대화상자의클릭결과가 OK 일경우 if (opendialog1.showdialog() == DialogResult.OK) txtfilename.text = "FileName:"+Path.GetFileName(openDialog1.FileName); txtpath.text = "DirectoryName:"+Path +Path.GetDirectoryName(openDialog1.FileName); // 선택한파일에서텍스트를읽기위한 StreamReader 생성 // 매개변수로시스템의현재 ANSI 코드페이지에대한인코딩필요 - 한글처리 StreamReader sr = new StreamReader(openDialog1.FileName, Encoding.Default); //StreamReader 에서현재위치에서부터끝까지텍스트를읽어오기 txtmemo.text = sr.readtoend(); //StreamReader 닫기 sr.close(); 44

//SaveFileDialog를이용하여텍스트파일로텍스트박스의문자열을저장하기 SaveFileDialog savedialog1 = new SaveFileDialog(); // 현재디렉토리설정 savedialog1.initialdirectory = Directory.GetCurrentDirectory(); // 저장파일의필터설정 savedialog1.filter = "Text Document(*.txt) *.txt" + " All Files *.*"; PageSetupDialog PageSetupDialog 페이지관련인쇄설정 ( 용지, 여백, 페이지방향등 ) 을위한대화상자 if (savedialog1.showdialog() i l == DialogResult.OK) l // 선택한파일명으로저장할스트림생성 한글처리 StreamWriter sw = new StreamWriter(saveDialog1.FileName, false, Encoding.Default ); // 스트림을통하여텍스트파일저장 sw.write(txtmemo.text); // 스트림닫기 sw.close(); 45 PrintDialog PrintDialog 인쇄옵션 ( 프린터, 인쇄범위, 매수 ) 를선택할수있는대화상자 인쇄작성 1. 인쇄문서에대한 PrintDocument 객체생성 2. PrintPage 이벤트핸들러에인쇄작업코드작성 PrintDocument 의 print() 함수에의해발생되는 PrintPage 이벤트에대한처리내용 PrintPageEventArgs e의 Graphics를이용하여문서또는그림출력 3. PageSetupDialog 로용지방향, 페이지크기, 여백등인쇄할페이지설정 4. PrintDialog 로인쇄할프린터, 인쇄할페이지, 매수등설정 // PrintDocument : PrintPage이벤트처리에서출력작업 private System.Drawing.Printing.PrintDocument PrintDocument printdocument1; this.printdocument1 = new System.Drawing.Printing.PrintDocument(); this.printdocument1.printpage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage); // 인쇄작업을위한이벤트처리지정된위치색상폰트로문자열그리기 // 인쇄작업을위한이벤트처리 : 지정된위치, 색상, 폰트로문자열그리기 private void printdocument1_printpage(object sender, System.Drawing.Printing.PrintPageEventArgs e) System.Drawing.Font printfont = new System.Drawing.Font("Arial", 12, System.Drawing.FontStyle.Regular); G hi D St i (t tm T t i tf t S t D i B h Bl k e.graphics.drawstring(txtmemo.text, printfont, System.Drawing.Brushes.Black, 10, 10);

// PageSetupDialog : PrintDocument 의값으로초기설정 private void pagetoolstripmenuitem_click(object sender, EventArgs e) PageSetupDialog pagesetupdialog1 = new PageSetupDialog(); pagesetupdialog1.pagesettings = printdocument1.defaultpagesettings; pagesetupdialog1.printersettings = printdocument1.printersettings; if (pagesetupdialog1.showdialog() == DialogResult.OK) txtmemo.text = pagesetupdialog1.pagesettings.margins.tostring() + pagesetupdialog1.pagesettings.papersize.tostring(); PaperSize // PrintDialog : Document 속성에 PrintDocument 대입, 인쇄버튼을누르면 PrintDocument의 print() 함수호출로인쇄작업에대한이벤트발생 private void printtoolstripmenuitem_click(object sender, EventArgs e) PrintDialog printdialog1 = new PrintDialog(); printdialog1.document = printdocument1; DialogResult result = printdialog1.showdialog(); if (result == DialogResult.OK) //print() 함수호출로 printdocument의 PrintPage이벤트처리 printdocument1.print(); Custom Dialog 사용자정의대화상자 사용자와상호작용하고정보를검색하는데사용하는폼 Windows Forms을추가하여고유한사용자지정대화상자생성 대화상자에는일반적으로메뉴모음, 창스크롤막대, 최소화및최대화단추, 상태표시줄또는크기를조정할수있는테두리가없으므로관련속성설정 FormBorderStyle = FixedDialog MinimizeBox/MaximizeBox 속성을 false로설정 사용자정의대화상자표시 Modal 대화상자표시 ShowDialog() 메소드 해당대화상자가닫힐때까지 ShowDialog 메소드다음의코드가실행되지않음 Modeless 대화상자표시 Show() 메소드 폼이표시된직후 Show 메소드다음의코드가실행 Custom Dialog Custom Dialog 사용자정의대화상자확인 / 취소버튼 대화상자의반환값 DialogResult.OK, DialogResult.Cancel 버튼속성 ( 또는클릭이벤트처리 ) 에서 DialogResult 속성을 DialogResult.OK 또는 DialogResult.Cancel으로설정 Form의 AcceptButton/CancelButton 속성 해당버튼설정시단추에포커스가없는경우에도 Enter 키또는 Esc 키로클릭처리가능 사용자정의대화상자작성예 Form1 에버튼추가 VS2008의메뉴에서프로젝트->Windows Form 추가를선택하여 Form2 (formcustomdialogbox 이용 ) 작성 Form2 의 Text 속성 ( 사용자대화상자 ) Label1 추가 텍스트상자1 추가 버튼 1 추가 :Text 속성 ( 확인 ), DialogResult 속성 (OK) 버튼2 추가 : Text 속성 ( 취소 ), DialogResult 속성 (Cancel) Form1 버튼의클릭이벤트작성 private void button1_click(object sender, EventArgs e) ModalForm form2 = new ModalForm(); if (form2.showdialog() == DialogResult.OK) MessageBox.Show(" 확인을눌렀습니다 "); else MessageBox.Show( Show(" 취소를눌렀습니다 "); form2 = null;

Custom Modal Dialog 사용자정의모달대화상자생성및표시 ModalForm f = new ModalForm(); ShowDialog() 메소드사용 모달대화상자닫기 (Close) DialogResult 속성을 OK 또는 Cancel로지정하면폼이숨겨짐 폼의닫기단추를클릭하면 DialogResult 속성이 Cancel 로설정 대화상자를소유하는폼을 Owner 속성으로설정하여 접근 소유폼과대화상자사이에서로접근가능한데이터는 public 으로설정 Custom Modeless Dialog 사용자정의모달리스대화상자생성및표시 ModelessForm f = new ModelessForm(); Show() 메소드사용 대화상자를소유하는폼을 Owner 속성으로설정하여접근 Owner 폼에접근할데이터는 public 으로설정 //Modal 대화상자생성및표시 public partial class Form1 : Form private void button1_click(object sender, EventArgs e) ModalForm form2 = new ModalForm(); form2.owner = this; // 대화상자의소유폼설정 form2.showdialog(); // 모달대화상자로표시 if (form2.dialogresult == DialogResult.OK) // 대화상자의결과확인 this.label1.text = form2.textbox1.text; // 대화상자의 public데이타접근 MessageBox.Show(label1.Text, "Modal Dialog OK"); else if (form2.dialogresult l == DialogResult.Cancel) l l MessageBox.Show( Cancel, "Modal Dialog Cancel"); partial class ModalForm this.button1.dialogresult = System.Windows.Forms.DialogResult.OK; this.button2.dialogresult = System.Windows.Forms.DialogResult.Cancel; this.controls.add(this.button1); this.controls.add(this.button2); this.formborderstyle = System.Windows.Forms.FormBorderStyle.FixedDialog; F d S Fi ddi l this.maximizebox = false; this.minimizebox = false; this.text = "ModalForm"; // Modal Form ( 대화상자 ) public partial class ModalForm : Form public System.Windows.Forms.TextBox textbox1; // 소유폼에서접근할데이타 private void ModalForm_Load(object sender, EventArgs e) textbox1.text = ((Form1)this.Owner).label1.Text; // 소유폼의 public 데이터접근 // 확인버튼누르면확인메시지박스 private void button1_click(object sender, EventArgs e) MessageBox.Show( Show(" 확인을누름 ", "OK 버튼클릭이벤트 "); // 종료버튼을누르면종료확인후처리 private void button3_click(object sender, EventArgs e) // 대화상자를닫히지않도록설정후처리계속 this.dialogresult = DialogResult.None; DialogResult r = MessageBox.Show(" 종료하시겠습니까?", "Dialog Close", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (r == DialogResult.Yes) this.close(); 56

//Modeless 대화상자생성및표시 public partial class Form1 : Form private void button2_click(object sender, EventArgs e) ModelessForm form3 = new ModelessForm(); form3.owner = this; // 대화상자의소유폼설정 form3.show(); // 모델리스로표시 public partial class ModelessForm : Form //monthcalendar의날짜를선택했을때발생되는이벤트처리 private void monthcalendar1_datechanged(object sender, DateRangeEventArgs e) textbox1.text = e.start.toshortdatestring(); // 선택한날짜를텍스트박스에표시 // 적용버튼을누르면선택한날짜를메인폼 ( 소유폼 ) 의레이블에설정 private void button1_click(object sender, EventArgs e) ((Form1)this.Owner).label1.Text = this.textbox1.text; //Modeless 대화상자종료 private void button2_click(object sender, EventArgs e) this.close(); MDI MDI (Multiple Document Interface) 하나의응용프로그램에서동시에두개이상의문서를대상으로작업할수있는사용자인터페이스 MDI Child 속성 IsMdiChild MDI 자식여부를나타냄 MdiParent MDI 부모폼을지정 MDI Parent 속성 ActiveMdiChild IsMdiContainer MdiChildren 현재활성화된 MDI 자식폼을반환 폼이 MDI 부모가될수있는지를나타냄 MDI 자식들을배열로반환 MDI 주요메소드및이벤트 LayoutMdi 메소드 MDI 보모상의자식폼들을정렬 ArrangeIcons, Cascade, TileHorzontal, TileVertical MdiChildActive MDI 자식이닫히거나활성화될때발생 MDI MDI 부모폼생성및표시 IsMdiContainer 속성값을 true로설정 form1.ismdicontainer = true; 활성화된자식창확인 Form activechild = this.activemdichild; MDI 자식폼생성및표시 프로젝트->Windows Form 추가를사용하여자식폼 (Form2) 생성 부모폼에메뉴항목이벤트핸들러작성 private void newtoolstripmenuitem_click(object sender, EventArgs e) Form2 newmdichild = new Form2(); // 자식폼생성 newmdichild.mdiparent = this; // 자식폼의부모지정 newmdichild.show(); // 자식폼표시 //MDI의 Copy 메뉴항목클릭이벤트핸들러 private void copytoolstripmenuitem_click(object sender, EventArgs e) Form activechild = this.activemdichild; i // 활성화된자식폼 if (activechild!= null) RichTextBox thebox = (RichTextBox)activeChild.ActiveControl; if (thebox!= null) Clipboard.SetDataObject(theBox.SelectedText); //MDI 의 Paste 메뉴항목클릭이벤트핸들러 private void pastetoolstripmenuitem_click(object sender, EventArgs e) Form activechild = this.activemdichild; // 활성화된자식폼 if (activechild!= null) RichTextBox thebox = (RichTextBox)activeChild.ActiveControl; if (thebox!= null) IDataObject data = Clipboard.GetDataObject(); if (data.getdatapresent(dataformats.text)) thebox.selectedtext = data.getdata(dataformats.text).tostring(); //MDI의 TileHorzontal/TileVertical/Cascade/ArrangeIcons 메뉴항목클릭이벤트핸들러 private void tilehorizontaltoolstripmenuitem_click(object sender, EventArgs e) this.layoutmdi(mdilayout.tilehorizontal);

Custom Control 사용자정의컨트롤 기존컨트롤을상속받아사용자정의새로운컨트롤을작성 UserControl을상속받아합성컨트롤을작성 숫자만입력가능한텍스트상자컨트롤생성예제 파일메뉴-> 새로만들기-> 프로젝트 Visual C# 프로젝트목록에서 Windows Forms 컨트롤라이브러리 선택하고이름을 NumberTextBoxLib 을입력 솔루션탐색기에서 UserControl1.cs를 NumberTextBox.cs로변경 NumberTextBox.cs 코드에서상속을 UserControl에서 TextBox로변경 public partial class NumberTextBox: TextBox NumberTextBox.Designer.cs에 InitializeComponent() 에서 AutoScaleMode 속성은삭제 NumberTextBox.cs 코드에서 OnKeyPress( ) 메소드를재정의 솔루션을빌드하면컨트롤이완성 namespace NumberTextBoxLib public partial class NumberTextBox : TextBox public NumberTextBox() InitializeComponent(); private void InitializeComponent() components = new System.ComponentModel.Container(); //this.autoscalemode = System.Windows.Forms.AutoScaleMode.Font; // OnKeyPress 메소드재정의 protected override void OnKeyPress(KeyPressEventArgs e) base.onkeypress(e); int value = 0; e.handled =!int.tryparse(e.keychar.tostring(), out value); Custom Control 사용자정의컨트롤사용 솔루션탐색기의 참조 에 NumberTextBoxLib.dll 를 참조추가 도구상자 에서오른쪽마우스 항목선택 을한후 찾아보기 버튼에서 NumberTextBoxLib.dll 다시로딩한후, NumberTextBox 에체크가됬는지확인 폼에 NumberTextBox 를사용하여디자인하고솔루션을빌드하면컨트롤이완성 partial class Form2 private void InitializeComponent() // 중간생략 this.numbertextbox1.location = new System.Drawing.Point(72, 36); this.numbertextbox1.name = "numbertextbox1"; this.numbertextbox1.size = new System.Drawing.Size(100, 21); this.numbertextbox1.tabindex TabIndex = 5; // 중간생략 public NumberTextBoxLib.NumberTextBox numbertextbox1;// form1에서사용 private void Form2_Load(object sender, EventArgs e) numbertextbox1.text = ((Form1)this.Owner).thickness.ToString(); partial class Form1 private void thicknesstoolstripbutton_click(object sender, EventArgs e) Form2 form2 = new Form2(); form2.owner = this; form2.showdialog(); if (form2.dialogresult == DialogResult.OK) thickness = int.parse(form2.numbertextbox1.text); System.Diagnostics.Trace.WriteLine("Debug: THICKNESS=" + thickness); form2.close(); form2 = null;