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

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

Visual Basic 기본컨트롤

4장기본프로그래밍2

PowerPoint Template

제 1장 C#의 개요

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

Javascript

윈도우시스템프로그래밍

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

MFC 프로그래밍

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

Visual Basic Visual Basic 소개

슬라이드 1

C# 입문 : 이론과 실습

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

C# 입문 : 이론과 실습

오버라이딩 (Overriding)

Visual Basic 반복문

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

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

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

C# 입문 : 이론과 실습

PowerPoint Presentation

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

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

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

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

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

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

UI TASK & KEY EVENT

이장에서다룰내용 테두리를제어하는스타일시트 외부여백 (Margin) 과내부여백 (Padding) 관련속성 위치관련속성 2

비주얼프로그램I_04.pptx

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

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

윈도우시스템프로그래밍

윈도우시스템프로그래밍

2009년 상반기 사업계획

Microsoft PowerPoint - CSharp-10-예외처리

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

歯MDI.PDF

MVVM 패턴의 이해

C# 입문 : 이론과 실습

어댑터뷰

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

제11장 프로세스와 쓰레드

PowerPoint Template

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

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax

<4D F736F F F696E74202D203039C0E520B4EBC8ADBBF3C0DA205BC8A3C8AF20B8F0B5E55D>

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

Programming hwp

PowerPoint 프레젠테이션

슬라이드 1

04장 메시지 처리 유형

Design Issues

Modal Window

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

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

5장 MFC기반 다지기

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - 04windows.ppt

PowerPoint Presentation

DLL(Dynamic Linked Library)

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

그래픽 프로그래밍

C++ Programming

Microsoft PowerPoint - 06-Chapter09-Event.ppt

PowerPoint Presentation

윈도우 프로그래밍의 개념

슬라이드 1

UI TASK & KEY EVENT

1

Chapter #01 Subject

C# Programming Guide - Types

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

쉽게 풀어쓴 C 프로그래밍

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

C++ Programming

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Database Design Lab: MS Access Queries 1. Download lab6.accdb and rename it to lab7.accdb. 2. 이름 값을가지는쿼리 qryauthor 를만든다 a) Open lab6.accdb. b) 리본메뉴 만들

<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D>

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

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - 06-Body Data Class.pptx

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

1

Microsoft Word - CUWIN UI COMPONENT.doc

차례보기 Easy Setting Box 소개 03 Easy Setting Box 란 03 Easy Setting Box 주요기능 04 사용요구사항 Easy Setting Box 설치 / 제거하기 05 Easy Setting Box 설치하기 08 Easy Setting

tiawPlot ac 사용방법

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - logo_2-미해답.ppt [호환 모드]

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint Presentation

vRealize Automation용 VMware Remote Console - VMware

JDK이클립스

Transcription:

Overview C# Windows Forms 321190 2009 년가을학기 10/27/2009 박경신 Windows OS & Windows Applications 특징이해 Windows Form Form 클래스 InitializeComponent() Application.Run() Form 속성 (Property) - 모양변경, 위치및크기, 초기상태 Form Modality MDI (Multiple Document Interface) Windows OS 특징 Graphical User Interface (GUI) 일관성있는사용자 인터페이스시스템메뉴 메뉴 툴바 최소 / 최대 / 닫기버튼 Windows OS 특징 메시지기반구조 (Message-driven Architecture) 이벤트발생 대기 대화상자 클라이언트영역 스크롤바 윈도우시스템메시지큐 응용프로그램메시지큐 #3 응용프로그램메시지큐 #2 처리 처리 상태바 3 응용프로그램메시지큐 #1 4

Windows OS 특징 멀티태스킹 (Multi-Tasking) 하나의윈도우즈시스템에서여러개의응용프로그램을수행 응용프로그램사이의상호작용가능 멀티스레딩 (Multi-Threading) 하나의응용프로그램에여러개의실행흐름을생성 장치에독립적 장치드라이버 (Device Driver) 에의해주변장치들을제어 Windows Application 특징 API 호출문집합 API(Application Programming Interface) - 윈도우운영체제가응용프로그램을위해제공하는각종함수집합 응용프로그램 call API#1 call API#2 call API#3 call API#4 call API#n 5 6 Windows Application 특징 메시지핸들러 (Message Handler) 집합 메시지핸들러 (Message Handler) - 메시지를받았을때동작을결정하는코드 - 키보드, 마우스, 메뉴, 등등 윈도우프로시저 (Window Procedure) 이러한메시지핸들러의집합 Windows Application 특징 실행파일과 DLL 집합 DLL(Dynamic-Link Library): 프로그램이실행중에호출할수있는함수 ( 코드 ) 와리소스 응용프로그램 메시지핸들러 #1 메시지핸들러 #2 메시지핸들러 #3 메시지핸들러 #4 메시지핸들러 #5 메시지핸들러 #6 윈도우프로시저 : 메시지핸들러집합 7 응용프로그램 실행파일 DLL #1 DLL #2 DLL #3 DLL #4 DLL #5 8

Windows Application 특징 장치독립적 윈도우시스템의 API 를사용하여간접적으로주변장치들을제어 응용프로그램 API 장치드라이버주변장치 Windows Forms Windows Forms 응용프로그램에공통적으로들어가는기능을사용자인터페이스컴포넌트형태로미리구현해놓은.NET 클래스 Windows 응용프로그램의사용자인터페이스를구성하는창또는대화상자 ( 응용프로그램에표시되는모든창 ), 다중문서인터페이스등 VC++ MFC와비슷함.NET 프레임워크에서지원되므로.NET 언어에서모두사용가능 9 Windows Forms 윈도우폼응용프로그램생성시대부분의기능 System.Windows.Forms 네임스페이스에포함 기본적인윈도우폼응용프로그램 () IDE 의시작페이지에서 Windows Form Application 새프로젝트를만들면자동생성 새프로젝트대화상자 using System; using System.Windows.Forms; static class Program { // 프로그램시작점 static void Main() { Application.EnableVisualStyle(); Application.SetCompatibleTextRenderingDefault(false); p Application.Run(new Form1()); // 폼객체생성및메시지처리

기본폼 폼은 CLR 의 System.Windows.Forms.Form 클래스에서지원 프로젝트생성시자동으로작성된 Form1.cs 파일생성 Form1.cs 의디자인템플릿과코드보기 Form1() 생성자에서 InitializeComponent() t() 호출 Partial 클래스 partial 키워드를사용하여클래스나구조체의정의또는인터페이스를두개이상의소스파일로분할가능 대규모프로젝트를진행하는경우클래스를개별파일로분할하면여러프로그래머가동시에작업을수행할수있음 자동으로생성된소스를사용하여작업하는경우소스파일을다시만들지않고도클래스에코드를추가가능 public partial class Employee { public void DoWork() {. public partial class Employee { public void GoToLunch() {. InitializeComponent() 윈도우폼을응용프로그램에연결해주는코드가포함 윈도우폼과이벤트핸들러를연결하는코드가포함 System.Windows.Forms.Application.Run 메소드가이벤트처리스레드를만드는역할을함 폼클래스의생성자가딱한번호출 partial class Earth : Planet, IRotate {. partial class Earth : IRevolve {

Application.Run(Form) 현재스레드에서표준응용프로그램메시지루프의실행을시작하고지정된폼을표시 폼이닫힐때, 메시지루프에종료메시지를보냄 Message Loop 메시지큐에서메시지를하나씩꺼내어처리하기위한반복문 응용프로그램이종료될때까지반복응용프로그램 윈도우폼에서컨트롤사용 개발자는도구상자에서각종컨트롤 ( 예 : 버튼, 텍스트박스, 리스트뷰등 ) 을 Drag-and-Drop하여원하는곳에배치하여화면을디자인 응용프로그램메시지큐 Message loop 메시지핸들러 #1 메시지핸들러 #2 메시지핸들러 #3 윈도우폼에서컨트롤사용 그리고, 속성 (Property) 창에서속성을변경하면자동으로 InitializeComponent() 메소드에업데이트 private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.label1 = new System.Windows.Forms.Label(); this.suspendlayout(); // // button1 // this.button1.location = new System.Drawing.Point(34, 43); this.button1.name = "button1"; this.button1.size = new System.Drawing.Size(121, 53); this.button1.tabindex = 0; this.button1.text = "button1"; this.button1.usevisualstylebackcolor = true; // 중간생략.. 폼클래스 윈도우응용프로그램의움직임을제어하는멤버들을정의해놓은하위수준의클래스 응용프로그램을종료하거나휴식 (Idle) 상태를처리하는등의응용프로그램의행동을처리하는많은이벤트를정의 응용프로그램클래스의정적메소드, 속성, 이벤트 응용프로그램클래스로할수있는기능 응용프로그램의정보를제공, 응용프로그램이종료할때의이벤트를처리, 메시지처리

폼클래스상속계층구조 System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.Control System.Windows.Forms.ScrollableControl System.Windows.Forms.ContainerControl System.Windows.Forms.Form 폼클래스자체로서의의미뿐만아니라, Custom Form 클래스의직접적인기본클래스로서의의미도가짐 폼클래스는대부분의특성을상속받아재정의하는메소드제공 메소드 설명 Activate() 주어진폼을활성화시키시고, 그포커스를폼에맞춤 Close() 폼을닫고폼과관련된컨트롤과컴포넌트에할당되 었던모드리소스를해제 CenterToScreen() 폼을스크린부동중심점에위치 LayoutMDI() 부모폼안의자식폼들을모두정렬 OnResize() Resize 이벤트에반응 ShowDialog() 폼을 Modal Dialog 로서나타냄 Show() 숨겨진 (Hide) 폼을화면상에표시 Hide() 단지폼을화면상에보이지않게함 폼클래스의속성 (Property) Name : 폼의이름 BackColor : 배경색 ( 색상이름또는빨강 (Red), 녹색 (Green), 파랑 (Blue) 의 RGB 값으로지정 ) form1.backcolor = System.Drawing.Color.DarkBlue; BackgroundImage g : 폼의배경그림 Icon : 폼아이콘 Opacity : 폼의투명도 폼의버튼사용여부 form1.minimizebox = false; 속성 값 설명 MinimizeBox True/False 최소화버튼사용여부 MaximizeBox True/False 최대화버튼사용여부 ControlBox True/False 최소, 최대, 닫기버튼사용여부 FormBrderStyle : 폼의테두리모양 form1.formborderstyle = FormBorderStyle.FixedSingle; 값설명 Fixed3D 크기가고정된 3 차원테두리 FixedDialog 크기가고정된대화상자스타일의굵은테두리 FixedSingle 크기가고정된단일선테두리 Sizable 크기를조정할수있는테두리 None 테두리가없는창 FixedToolWindow 크기가고정된도구창 SizableToolWindow 크기를조정할수있는도구창 Size : 폼의크기설정 form1.size = new System.Drawing.Size(100, 100); 폭 : Form1.Width = 200 높이 : Form1.Height = 200

Location : 폼의위치설정 form1.location = new Point(100, 100); X좌표 : Form1.Left = 200; Y좌표 : Form1.Top = 200; StartPosition : 초기위치설정 form1.startposition = FormStartPosition.Manual; 값 Manual CenterScreen WindowsDefaultLocation WindowsDefaultBounds CenterParent 설명디자인때의 location 속성값으로설정된위치에표시화면중앙위치에표시 Windows 기본위치인화면의좌측상단에표시 Windows 기본테두리설정값의테두리를포함한윈도우기본위치에표시부모폼의테두리내에서중앙에위치 WindowState : 폼의표시상태설정 (Normal : 보통상태로변경, Minimized : 최소화상태로변경, Maximized : 최대화상태로변경 ) form1.windowstate = FormWindowState.Normal; ShowInTaskbar :Windows 작업표시줄에표시여부설정, 작업표시줄로프로그램전환불가능, <Alt+Tab> 을사용하여프로그램전환가능 form1.showintaskbar = false; TopMost : 최상위창으로설정 form1.topmost = true; Visible : 화면에폼표시여부설정 form1.visible = true; 모달리티 (Modality) Modal Form 모달폼이표시되는동안제어권을독점하고있는형태 사용자로부터입력받은정보로다음진행상태가결정되는경우에사용 ShowDialog() 메소드를사용 예 : 열기, 저장, 옵션창 Modeless Form 모달이아닌폼이표시되는동안다른폼으로의제어이동이가능한형태 서로다른창사이에서의정보교환을필요로하는경우에사용 Show() 메소드를사용 예 : 찾기및바꾸기 창 MDI(Multiple Document Interface) MDI (Multiple Document Interface) 하나의부모창 ( 컨테이너 ) 과여러개의자식창으로구성 부모창 (Parent Form) 다른창을영역내에포함시키는창 IsMdiContainer 속성값을 true로설정 form1.ismdicontainer = true; 활성화된자식창확인 form activechild = this.activemdichild; 자식창 (Child Form) 부모창의영역내에존재하는창 MdiParent 속성값에부모객체설정 form2.mdiparent = form1;

MDI(Multiple Document Interface) LayoutMdi 속성을이용하여자식폼정렬 Form1.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade); 멤버이름설명 ArrangeIcons 모든 MDI 자식아이콘은 MDI 부모폼의클라이언트영역내에서정렬 Cascade 모든 MDI 자식창은 MDI 부모폼의클라이언트영역내에서단식으로정렬 TileHorizontal 모든 MDI 자식창은 MDI 부모폼의클라이언트영역내에서 Tile Horizontal 식으로정렬 TileVertical 모든 MDI 자식창은 MDI 부모폼의클라이언트영역내에서 Tile Vertical식으로정렬 MdiChildren 속성을사용하여모든자식폼을배열로얻기 Form[] forms = form1.mdichildren foreach (Form f in forms) { Visual Studio.NET의대부분의컨트롤들은 System.Windows.Forms.Control 클래스로부터파생 모든컨트롤들은컨트롤의모습이나행동을결정하는여러속성을가짐 기반클래스인 Control 클래스로부터상속, 재정의 컨트롤클래스의공통속성 (Property) 공통속성 BackColor BackgroundImage Enabled Focused 설명컨트롤의배경색컨트롤의배경이미지컨트롤의활성화여부 ( 비활성화된컨트롤은화면엔표시되지만동작되지않음 ) 초점을갖고있는지여부 ( 초점을갖고있는컨트롤만마우스나키에반응함 ) Font 컨트롤텍스트의폰트 ForeColor 컨트롤의전경색 ( 일반적으로글자의색깔을의미 ) TabIndex 탭순서 ( 탭키를누를때초점이이동하는순서 ) TabStop 탭키를누를때초점을받을지를지정 Text 컨트롤과관련된텍스트 Visible 컨트롤의가시성지정 (true로지정된컨트롤만화면에표시 ) 컨트롤클래스의공통메소드 (Method) 공통메소드 Focus() Hide() Show() 설명입력초점을설정컨트롤을숨김컨트롤을표시 컨트롤클래스의 GUI 관련디자인속성 속성 설명 Anchor 폼의크기변경시고정거리를유지해야할측면 Dock 컨트롤의도킹형태지정 Padding 측면과도킹컨트롤사이의공간지정 (default: 0) Location 폼의좌측상단을모서리를기준으로한컨트롤의좌표 Size 컨트롤의픽셀단위의크기 MinimumSizei 컨트롤의최대, 최소크기 MaximumSize

앵커 폼안의컨트롤들이그려지는위치를고정 예 : 앵커를 Top, Bottom, Left, Right 를지정한경우 도킹 컨트롤들을폼의치수에상관없이폼의지정된가장자리를모두차지 예 : 도킹을 Right 를지정한경우 이벤트 Key press 또는 mouse click 등사용자조작이발생할경우의행동 버튼클릭이벤트 사용자가버튼위에마우스포인터를놓고왼쪽마우스버튼을눌렀다가, 포인터가버튼위에있는동안떼면발생 ( 버튼이포커스를가진경우엔터키를눌러도발생 ) 핸들러추가시, InitializeComponent() 에이벤트핸들러등록을위한대리자코드추가 this.button1.click tt += new System.EventHandler(this.button1_Click); th tt 이벤트핸들러로사용될메소드자체추가 메소드명은컨트롤이름에밑줄이붙고, 뒤에이벤트명시 버튼을클릭하였을경우폼의타이틀변화 private void button1_click(object sender, System.EventArgs e) { this.label1.text = 버튼이클릭되었습니다. ; // 레이블의텍스트 컨트롤의마우스이벤트발생순서 1. MouseEnter : 마우스포인터가컨트롤에들어가면발생 2. MouseMove : 마우스포인터를컨트롤위로이동하면발생 3. MouseHover : 마우스포인터가컨트롤위에있을때발생 4. MouseDown : 마우스포인터가컨트롤위에있을때마우스 단추를클릭하면발생 5. MouseWheel : 컨트롤에포커스가있을때마우스휠을 움직이면발생 6. MouseUp : 마우스포인터가컨트롤위에있을때마우스 단추를눌렀다놓으면발생 7. MouseLeave : 마우스포인터가컨트롤을벗어나면발생 // 버튼이눌렸을때 private void button1_click(object sender, EventArgs e){ F 1 f F 1() Form1 f = new Form1(); f.showdialog(); // 버튼이눌렸을때 private void button2_click(object sender, EventArgs e){ Control p = button2.parent; MessageBox.Show("Parent Type = " + p.gettype() + ", Parent Text = " + p.text, "button2_click"); // 마우스포인터가컨트롤내에들어올때발생되는이벤트처리 private void button3_mouseenter(object sender, EventArgs e) { Button b = (Button)sender; prevcolor = button3.backcolor; b.backcolor = System.Drawing.Color.AliceBlue; // 마우스포인터가컨트롤을벗어날때발생되는이벤트처리 private void button3_mouseleave(object sender, EventArgs e) { Button b = (Button)sender; ( ) b.backcolor = prevcolor ;