- 1 - C# Programming 이현정 hjyi@hotmail.com MCT/MCSD/MCAD/MCSD.NET
목차 - 2-1부 C# 언어 1장 C, C++ 그리고 C# 2장 Hello, C#! 3장변수와자료형 4장연산자 5장흐름제어 6장메쏘드 7장클래스 8장배열과컬렉션 9장속성과인덱서 10장델리게이트와이벤트 11장예외처리 12장특성 13장일반화프로그래밍 2부.NET 프레임워크활용 14 장비주얼 C# 익스프레스시작하기 15 장 C# 윈도우프로그래밍의기초 16 장메모장만들기 17 장파일관리자만들기 - Part 1 18 장파일관리자만들기 - Part 2 19 장 MyCanvas - GDI+ 20 장데이터베이스와 ADO.NET 21 장 ADO.NET 과함께하는 MyFriends 프로젝트 22 장쓰레드 (Thread) 23 장네트워크프로그래밍 24 장컴포넌트프로그래밍 25 장.NET 리모팅 26 장이책에서다루지못한것들
- 3-14장. 비주얼 C# 익스프레스 비주얼 C# 익스프레스의구성 컨트롤의사용 : 무조건따라해보기
- 4-15장. C# 윈도우프로그래밍의기초 도대체무슨일이일어나고있을걸까? 윈도우는어떻게만들까? Application 클래스 Form 클래스 - 이벤트와이벤트처리기는어떻게연결하는가 - 윈도우의모양은어떻게조정하는가 - 어떻게다른컨트롤의컨테이너가될수있는가
- 5-16장. 메모장만들기 메뉴만들기 컨트롤배치하기 OpenFileDialog 컨트롤 SaveFileDialog 컨트롤 Form 컨트롤속성변경하기 코드추가하기 UnicodeOptoin 속성추가하기
- 6 - OpenDocument() 작성하기 StreamReader 사용 SaveDocument() 작성하기 - StreamWriter 사용 메뉴이벤트처리기작성하기
UI 구성하기 - 7 - ToolStrip 컨트롤 특징 예 Render Modes 메뉴 - MenuStrip Guideline 메뉴추가 이벤트처리 도구모음 -ToolStrip Click Event 처리 상태표시줄 - StatusStrip Run Time 에상태표시줄변경하기
Professional Applications 만들기 - 8 -
Professional Applications 만들기 - 9 -
UI 구성하기 - 10 - ToolStrip 컨트롤 특징 예 Render Modes 메뉴 - MenuStrip Guideline 메뉴추가 이벤트처리 도구모음 -ToolStrip Click Event 처리 상태표시줄 - StatusStrip Run Time 에상태표시줄변경하기
1. ToolStrip 컨트롤 - 11 - Toolbars, Menus, Drop-down menus와 Context menus을위해공통적인 API 제공 MenuStrip, ToolStrip, StatusStrip, ContextMenuStrip ToolStrip에서상속받음 고급디자인환경제공
1.1 ToolStrip 컨트롤특징 - 12 - Item 종류 ToolStripButton ToolStripMenuItem ToolStripTextBox Item layout options Item overflowing ToolStripContainer Item Customization ToolStripComboBox ToolStripProgressBar ToolStripDropDownButton
1.2 ToolStrip 컨트롤예 - 13 -
1.3 ToolStrip 컨트롤 Render Modes - 14 - Professional System Custom
2. 메뉴 - MenuStrip - 15 - Menu Heading Menu Items Submenu
2.1 Guidelines - 16 - Guideline 첫글자는대문자로.... Access Key 를지정 Naming conventions 를사용 대화상자를보여주는메뉴에는 를표시 예 File, Edit, Help File, Edit, Help FileItem, EditItem, HelpItem Save As
2.2 메뉴추가 - 17 -
2.3 이벤트처리 - 18 - this.opentoolstripmenuitem.text = "Open"; this.opentoolstripmenuitem.click += += new System.EventHandler (this.opentoolstripmenuitem_click); // private void opentoolstripmenuitem_click(object sender, EventArgs e) e) { // // }
3. 도구모음 - ToolStrip - 19 -
3.1 Click Event 처리 - 20 - private void toolstripbutton1_click(object sender, EventArgs e) e) { } opentoolstripmenuitem.performclick();
4. 상태표시줄 StatusStrip - 21 -
4.1 Run Time에상태표시줄변경하기 - 22 - toolstripstatuslabel1.text = openfiledialog1.filename; toolstripstatuslabel1.textalign Align = MiddleCenter;
대화상자 - 23 - 공통대화상자 1.1 공통대화상자의사용 1.2 속성지정 1.3 공통대화상자로부터정보읽기 1.4 실습 사용자정의대화상자 2.1 종류 2.2 사용자정의대화상자만들기 2.3 실습
1. 공통대화상자 (Common Dialog Box) - 24 - OpenFileDialog SaveFileDialog FontDialog ColorDialog PrintDialog PageSetupDialog PrintPreveiwDialog
1.1 공통대화상자의사용 - 25 - 대화상자를폼위로드래깅 대화상자를띄우기위한이벤트를추가 private void OpenMenuItem_Click(object sender, System.EventArgs e) e) { openfiledialog1.showdialog(); }
1.2 속성지정 - 26 - 속성창 Options openfiledialog1.filter = @A C: C:\C# C# fiels *. *.cs XML files *.xml all files(*.*) *.* ;
1.3 공통대화상자로부터정보읽기 - 27 - DialogResult OK, Cancel, Abort, Retry, Ignore, Yes, No, (or None) if if (openfiledialog1.showdialog() == == DialogResult.OK) ) { MessageBox.Show(openFileDialog1.FileName openfiledialog1.filename); ); }
2. 사용자정의대화상자 - 28 - 종류 Modal Dialog Box ShowDialog() Modeless Dialog Box Show()
2.1 사용자정의대화상자만들기 - 29 - 솔루션탐색기에서 Form 추가 Form 속성을 Dialog Box 로설정 FormBorderStyle ControlBox MinimizeBox MaximizeBox ShowInTaskbar :false :FixedDialog :false :false :false
2.1 사용자정의대화상자만들기 - 30 - OK / Cancel Button 추가 Button 속성지정 : Text,Name,DialogResult Form 속성지정 : AcceptButton,CancelButton DialogBox 띄우기 :MenuItem Event Handler 구현 private void menuitemdialog_click(object sender, System.EventArgs e) { } MessageDialog dlg = new MessageDialog (); if (dlg.showdialog () == DialogResult.OK) { } message = dlg.message; Invalidate();
2.1 사용자정의대화상자만들기 - 31-5 DialogBox 에서입력한정보얻기 public class MessageDialog : System.Windows.Forms.Form { private System.Windows.Forms.TextBox textbox1; //.. public string Message // Get Property 구현 { get { return textbox1.text;} } } private void menuitemdialog_click(object sender, System.EventArgs e) { MessageDialog dlg = new MessageDialog (); if (dlg.showdialog () == DialogResult.OK){ message = dlg.message;invalidate(); } }
2.1 사용자정의대화상자만들기 - 32-5 Tab Order 지정하기 보기메뉴 탭순서로지정 Control 의 Tab Index 속성지정,Tab Stop 속성
GDI+ 소개 - 33 - GDI+ 란? Graphics 객체 화면에그리기 선그리기 도형그리기 텍스트출력하기
1. GDI+ 란? - 34 - GDI+ ( 새로운 Graphics Device Interface) 비디오디스플레이와프린터에그래픽이나텍스트출력을할수있게해준다. 장치독립적인응용프로그램 (Device-Independent Applications) 을만들수있다. GDI+ 범주 2-D vector graphics Text Images
1. GDI+ 란? - 35 - Namespace System.Drawing System.Drawing.Drawing2D System.Drawing.Imaging System.Drawing.Printing. System.Drawing.Design System.Drawing.Text.
2. Graphics 객체 - 36 - 드로잉표면을제공 특정위치에텍스트와그래픽을그려주는메서드를제공 Graphics mygraphic = this.creategraphics(); ' 선그리기 mygraphic.graphics.drawline(mypen,x1,y1,x2,y2) ; ' 브러쉬로특정영역채우기 mygraphic.fillrectangle(mybrush,x1,y1,x2,y2); ' 폰트와브러쉬를사용하여텍스트출력하기 mygraphic.drawstring(mytext,myfont,mybrush,x1,y1);
2.1 Graphics 객체얻기 - 37 - private void form1_paint(object sender, PaintEventArgs e) e) {{ Graphics g = e.graphics; //.. }} protected override void OnPaint(PaintEventArgs e) e) {{ Graphics g = pe.graphics; // }} private void Form1_MouseDown(object sender, MouseEventArgs e) e) {{ Graphics g = this.creategraphics(); }}
3. 화면에그리기 - 38 - Form Paint Event 처리하거나 OnPaint() 를재정의 // Form Paint Event private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) e) { Font drawfont = new new Font("Arial", 16); SolidBrush drawbrush = new new SolidBrush(System.Drawing.Color.Black); Point drawpoint = new new Point(0,0); e.graphics.drawstring( Hello,World, drawfont, drawbrush, drawpoint); } Paint Event 발생 Invalidate()
4. 선그리기 - 39 - Pen 선을그리거나도형의경계선을그릴때사용된다. Pen mypen = new Pen(Color.Blue); Pen mypen = new Pen(Color.Blue); Pen pen = new Pen(brush,4) pen.pentype = PenType.PathGradient; pen.alignment = PenAlignment.Center; 선그리는함수 Pen blackpen = new Pen(Color.Black, 3); e.graphics.drawline(blackpen, 100.0F,100.0F, 500.0F, 100.0F); e.graphics.drawrectangle(new Pen(Color.Red), 10, 10, 100, 100);
5. 도형그리기 - 40 - Brush 텍스트를그리거나도형안의영역을그릴때사용된다. SolidBrush mybrush = new SolidBrush(Color.Blue); Point p1 = new Point(50,50); Point p2 = new Point(100,100); LinearGradientBrush lnbrush = new LinearGradientBrush (p1,p2,color.red,color.yellow); Rectangle rect = new Rectangle(50,50,100,100); LinearGradientBrush lnbrush = new LinearGradientBrush (rect,color.red, Color.Yellow,LinearGradientMode.ForwardDiagonal); 도형그리는함수 e.graphics.fillrectangle(mybrush mybrush,, 150, 150, 100, 100);
5. 도형그리기 - 41 - Brush 종류 SolidBrush TextureBrush LinerGradientBrush PathGradientBrush HatchBrush
6. 텍스트출력하기 ( 글자그리기 ) Font - 42 - 텍스트 ( 글자 ) 를출력할때사용된다. Font myfont = new Font("Arial", 12); Pen mypen = new Pen(Color.Blue); Pen pen = new Pen(brush,4) pen.pentype = PenType.PathGradient; pen.alignment = PenAlignment.Center; 글자그리는함수 Pen blackpen = new Pen(Color.Black, 3); e.graphics.drawline(blackpen, 100.0F,100.0F, 500.0F, 100.0F);
6.1 글자크기정보구하기 - 43 - 글자를그리려면 1. 글자의위치를구한다. 2. 글자를그리는데상요항 Font 와 Brush 를선택한다. 3. Graphics.DrawString 메서드를호출한다. e.graphics.drawstring(mytext, myfont, mybrush, X1, Y1); 글자크기구하기 textwidth = e.graphics.measurestring(mytext,myfont).width; textheight = e.graphics.measurestring(mytext,myfont).height;
- 44 - 배포 Windows 응용프로그램의설치및배포 설치및배포프로젝트 ClickOnce 배포 VS2005에서추가됨
설치및배포프로젝트 - 45 -
설치및배포프로젝트 - 46 - 프로젝트작성 프로젝트구성 설치편집기들 파일시스템편집기 파일형식편집기 시작조건편집기 사용자인터페이스편집기 프로젝트빌드 설치
파일시스템편집기 - 47 -
ClickOnce 배포 - 48 - Visual Studio 2005의 IDE 에서지원 프로젝트디자이너 게시 보안 게시마법사 어플리케이션을웹서버에복사 FTP나네트워크로파일공유
게시옵션 - 49 -
ClickOnce 모델 - 50 - ClickOnce Wizard Windows Forms Project VS2005 http://server/testapp/testapp.application wwwroot TestApp TestApp.application TestApp_1.0.0.0 TestApp.exe.deploy TestApp.exe.manifest 웹서버 버전을체크하고필요하면업데이트 버전디렉토리에서 manifest file 를다운로드 Manifest 의 permission 을체크 OK 이면다운로드받고실행
ClickOnce 기본개념 - 51-1.0 1.1 Deployment Manifest Application Manifest 1.0 Web Page Link to Manifest Application Manifest 1.1 Application manifest 어플리케이션을기술 예 : 어플리케이션이어떤어셈블리로구성되는가? Deployment manifest 어플리케이션배포를기술 예 : 클라이언트가어느버전을사용해야만되는가?
ClickOnce 업데이트옵션들 - 52 - On application startup 업데이트가발견되면사용자에게어플리케이션을업데이트할것인지를묻는다 After application startup 업데이트가발견되면사용자에게다음번실행시에업데이트할것인지를묻는다 Required updates 최소한으로요구되는버전 (minimum required version ) 을사용할것을명시 Programmatic updating 업데이트경험을토대로프로그래밍으로제어
ClickOnce 프로그래밍 - 53 - Application Updating Update Now 메뉴를구현 클라이언트와서버프로그램을동기화하고자할때 When-to-update logic 를커스터마이징서버로드에따라업데이트를제한 On-demand download 진보적인설치 Shell System.Deployment namespace System.Deployment.Application namespace ApplicationDeployment