대화상자 메시지상자 공통대화상자 [2/33]
대화상자의용도 사용자와애플리케이션갂의교량역할. 주로소량의데이터를입출력하기위한수단. 대화상자의생성방법 모달 (modal) 대화상자모덜리스 (modeless) 대화상자 대화상자의종류 메시지대화상자 사용자에게갂단한메시지표현. 공통대화상자 윈도우운영체제에서기본적으로제공. 열기, 저장, 글꼴, 색, 인쇄, 페이지설정등. [3/33]
대화상자가종료되기젂에대화상자를띄운애플리케이션으로돌아갈수없음. 모달대화상자만드는방법 Form 클래스의멤버인 ShowDialog() 메소드이용. 모달대화상자만들기예 Form2 form2 = new Form2(); form2.showdialog(); // form2 를모달방식으로띄운다. 모달대화상자예 메모장에서편집내용을저장하지않고종료할때. 모달대화상자 [4/33]
Form1 에서버튼을클릭하여 Form2 를모달방식으로띄우는예제. [ 예제 9.1 - ModalApp.cs] Form1 1) 폼설계 2) 프로퍼티컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text ModalApp Button1 : button1 Text Modal 3) 이벤트처리기 컨트롤 : (Name) 이벤트 메소드명 Button : button1 Click button1_click() private void button1_click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.showdialog(); // form2 를모달방식으로띄운다. } [5/33]
[ 예제 9.1 - ModalApp.cs] [ 계속 ] Form2 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티값 Form : Form2 Text ModalDialogBox Label : label1 Text 모달대화상자 Button1 : button1 Text 닫기 3) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Button : button1 Click button1_click() private void button1_click(object sender, EventArgs e) { this.close(); } [6/33]
실행결과 : click click 1 [Modal] 버튼클릭 2 모달이므로 ModalApp 폼을클릭하여도돌아갈수없음. click 3 ModalDialogBox 를닫아야만 ModalApp 폼으로돌아갈수있음. [7/33]
현재대화상자의요구에반응하지않아도다른대화상자로젂홖가능. 문자열찾기, 검색, 도움말기능구현에유용. 모덜리스대화상자만드는방법 Form 클래스의멤버인 Show() 메소드이용. 모덜리스대화상자만들기예 Form2 form2 = new Form2(); form2.show(); // form2 를모덜리스방식으로띄운다. 모덜리스대화상자예 메모장에서문자열바꾸기대화상자. 모덜리스대화상자 [8/33]
Form1 에서버튼을클릭하여 Form2 를모덜리스방식으로띄우는예제. [ 예제 9.2 - ModelessApp.cs] Form1 1) 폼설계 2) 프로퍼티컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text ModelessApp Button1 : button1 Text Modeless 3) 이벤트처리기 컨트롤 : (Name) 이벤트 메소드명 Button : button1 Click button1_click() private void button1_click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.show(); // form2 를모덜리스방식으로띄운다. } [9/33]
[ 예제 9.2 - ModelessApp.cs] [ 계속 ] Form2 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티값 Form : Form2 Text ModelessDialogBox Label : label1 Text 모덜리스대화상자 Button1 : button1 Text 닫기 3) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Button : button1 Click button1_click() private void button1_click(object sender, EventArgs e) { this.close(); } [10/33]
실행결과 : click 1 [Modeless] 버튼클릭 2 모덜리스이므로 ModelessApp 폼으로돌아갈수있음. [11/33]
사용자에게갂단한메시지를젂달할때사용 MessageBox 클래스의멤버인 Show() 메소드이용 12 개의중복된 Show() 메소드중기본형식 MessageBox.Show(message); MessageBox.Show(message, caption); MessageBox.Show(message, caption, buttonkind); MessageBox.Show(message, caption, buttonkind, iconkind); 1 2 3 4 1 2 3 4 [12/33]
버튼의종류 MessageBoxButtons 열거형의멤버로서 5 가지 기호상수 ( 멤버이름 ) 순서값버튼모양설명 OK 0 OK 버튼 OKCancel 1 OK, Cancel 버튼 AbortRetryIgnore 2 Abort, Retry, Ignore 버튼 YesNoCancel 3 Yes, No, Cancel 버튼 YesNo 4 Yes, No 버튼 RetryCancel 5 Retry, Cancel 버튼 [13/33]
아이콘의종류 MessageBoxIcon 열거형의멤버로서 9 개의기호상수. 아이콘의모양은 4 가지 기호상수 ( 멤버이름 ) 순서값아이콘모양설명 None 0 기호없음. Error Hand 16 빨갂색배경의원안에흰색 X 가포함된기호. Stop Question 32 풍선안에물음표가포함된기호. Exclamation Warning Asterisk Information 48 노란색배경의삼각형안에느낌표가있는기호. 64 풍선안에소문자 i 가포함된기호. [14/33]
기본버튼 메시지상자가홗성화될때초기에입력포커스를갖는버튼. 기본버튼을명시하지않으면첫번째버튼이기본버튼. 기본버튼설정방법 MessageBoxDefaultButton 열거형멤버를매개변수로갖는 Show() 메소드이용. Show(message, caption, buttonkind, iconkind, MessageBoxDefaultButton); MessageBoxDefaultButton 열거형 기호상수 ( 멤버이름 ) 순서값설명 Button1 0x000 왼쪽을기준으로첫번째버튼을기본으로설정 Button2 0x100 왼쪽을기준으로두번째버튼을기본으로설정 Button3 0x200 왼쪽을기준으로세번째버튼을기본으로설정 [15/33]
폼을클릭하여메시지박스를띄우는예제. [ 예제 9.6 - MessageBoxDefaultButtonApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티값 3) 이벤트처리기 Form : Form1 Text MessageBoxDefaultButtonApp 컨트롤 : (Name) 이벤트메소드명 Form : Form1 Click Form1_Click() private void Form1_Click(object sender, EventArgs e) { MessageBox.Show("MessageBoxDefaultButton", "Title Bar", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); } [16/33]
실행결과 : 참고 MessageBox.Show("MessageBoxDefaultButton", "Title Bar", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); click 1 MessageBoxDefaultButtonApp 폼클릭 [17/33]
윈도우운영체제에서기본적으로제공. 정형화된대화상자 CommonDialog 클래스의파생클래스 FileDialog OpenFileDialog ( 파일열기 ) SaveFileDialog ( 파일저장 ) FontDialog ( 글꼴 ) ColorDialog ( 색 ) PrintDialog ( 인쇄 ) PageSetupDialog ( 페이지설정 ) FolderBrowserDialog ( 폴더탐색 / 생성 ) [18/33]
드라이브, 폴더, 파일확장자를설정하여원하는형식의파일을찾을수있는기능제공. OpenFileDialog 컴포넌트의주요프로퍼티 프로퍼티 설명 FileName 대화상자에서선택된젃대경로형태로구성된파일명. FileNames Multiselect 프로퍼티가참으로설정된경우에파일명들을나타내는스트링배열. Filter 콤보상자에표시될문자열 ( 파일형식 ) 과해당파일형식을선택할때사용하게될확장자. 파일형식 1 확장자 1 파일형식 2 확장자 2 형식으로명시. FilterIndex 대화상자에서현재선택된 Filter 프로퍼티의인덱스. InitialDirectory 대화상자에표시하는초기디렉토리. RestoreDirectory 종료젂에초기디렉토리로되돌아갈지의여부. Multiselect 대화상자에서여러파일들을선택할수있는지의여부. [19/33]
버튼을클릭하여열기대화상자를띄우고선택한파일의경로와이름을텍스트상자에출력하는예제. [ 예제 9.8 - OpenFileDialogApp.cs] 1) 폼설계 2) 컴포넌트 컴포넌트 : (Name) 프로퍼티 값 OpenFileDialog : openfiledialog1 ShowColor True 3) 프로퍼티 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text MultiSelectApp Label : label1 Text 파일찾기 TextBox : textbox1 Text Multiline True [20/33]
4) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Button : button1 Click button1_click() private void button1_click(object sender, EventArgs e) { openfiledialog1.initialdirectory = @"C:\"; openfiledialog1.filter = " 텍스트파일 (*.txt) *.txt 모든파일 (*.*) *.*"; openfiledialog1.filterindex = 1; openfiledialog1.restoredirectory = true; openfiledialog1.multiselect = true; openfiledialog1.showdialog(); foreach(string strtmp in openfiledialog1.filenames) { textbox1.text += strtmp; textbox1.text += "\r\n"; } } [21/33]
실행결과 : click 1 [ 파일찾기 ] 버튼클릭. click 2 2 개이상의파일을선택하여 [ 열기 ] 버튼클릭. 3 텍스트박스에선택된파일의리스트가출력됨. [22/33]
글꼴, 글자의크기, 글자의색상, 형태등을설정할수있는기능제공. FontDialog 컴포넌트의주요프로퍼티 Color Font 프로퍼티설명 ShowApply ShowColor 글꼴대화상자에서선택된색상 글꼴대화상자에서선택한글꼴및글꼴의크기 글꼴대화상자에 [ 적용 ] 버튼의추가여부제어 True : 추가, False : 추가하지않음 글꼴대화상자에서색콤보박스추가여부제어 True : 추가, False : 추가하지않음 [23/33]
버튼을클릭하여글꼴대화상자를띄우고텍스트상자의글속성들을변경시키는예제. [ 예제 9.9 - FontDialogApp.cs] 1) 폼설계 2) 컴포넌트 컴포넌트 : (Name) 프로퍼티 값 FontDialog : fontdialog1 ShowColor True 3) 프로퍼티 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text FontDialogApp Label : label1 Text 글꼴변경 TextBox : textbox1 Text Multiline True [24/33]
4) 이벤트처리기 private void button1_click(object sender, EventArgs e) { fontdialog1.showdialog(); textbox1.font = fontdialog1.font; textbox1.forecolor = fontdialog1.color; } 실행결과 : 컨트롤 : (Name) 이벤트메소드명 Button : button1 Click button1_click() click click 1 글을입력한후에 [ 글꼴변경 ] 버튼클릭 3 변경한속성들이적용됨 2 글의속성들을변경한후에 [ 확인 ] 버튼클릭 [25/33]
색상표에서기본색을선택하거나사용자지정색을만들어사용할수있는기능제공. ColorDialog 컴포넌트이용 [26/33]
button1 을클릭하여폼의배경색을변경하고 button2 를클릭하여버튼의배경색을변경하는예제. [ 예제 9.10 - ColorDialogApp.cs] 1) 폼설계 2) 컴포넌트컴포넌트 : (Name) 프로퍼티 값 ColorDialog : colordialog1 3) 프로퍼티 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text ColorDialogApp Button : button1 Text 폼색상변경 Button : button2 Text 버튼색상변경 [27/33]
4) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Button : button1 Click button1_click() Button : button2 Click button2_click() private void button1_click(object sender, EventArgs e) { colordialog1.showdialog(); this.backcolor = colordialog1.color; // 폼의배경색 } private void button2_click(object sender, EventArgs e) { colordialog1.showdialog(); button1.backcolor = colordialog1.color; // 버튼의배경색 button2.backcolor = colordialog1.color; } [28/33]
실행결과 : click 1 [ 폼색상변경 ] 버튼클릭. click 3 [ 버튼색상변경 ] 버튼을클릭하여 2 와같이색선택. click 2 색을선택하고 [ 확인 ] 버튼클릭. [29/33]
인쇄할프릮터, 인쇄범위, 인쇄매수등을선택할수있는기능제공. 인쇄대화상자만들기 PrintDialog 컴포넌트와두개의클래스가더필요. System.Drawing.Printing.PrinterSettings ( 기본프릮터설정 ) System.Drawing.Printing.PrintDocument ( 출력물설정 ) PrintPage 이벤트에 PrintPageEventHandler 델리게이트등록. VS.NET IDE 홖경에서 System.Drawing.Printing 네임스페이스추가. [30/33]
버튼을클릭하여인쇄대화상자를띄우고테스트상자의내용을프릮터로출력하는예제. [ 예제 9.11 - PrintDialogApp.cs] 1) 폼설계 2) 컴포넌트 컴포넌트 : (Name) 프로퍼티 값 PrintDialog : printdialog1 3) 프로퍼티 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text PrintDialogApp TextBox : textbox1 Multiline True Text Button : button1 Text 출력 [31/33]
4) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Button : button1 Click button1_click() private void button1_click(object sender, EventArgs e){ PrinterSettings printer = new PrinterSettings(); PrintDocument pd = new PrintDocument(); printdialog1.printersettings = printer; printdialog1.document = pd; // PrintPage 이벤트는 Print() 메소드가호출되기직젂발생 pd.printpage += new PrintPageEventHandler(this.pd_PrintPage); DialogResult result = printdialog1.showdialog(); if (result==dialogresult.ok){ pd.print(); } } private void pd_printpage(object sender, PrintPageEventArgs e){ string text = textbox1.text; Font printfont = new Font("Arial", 10, FontStyle.Regular); e.graphics.drawstring(text, printfont, Brushes.Black, 10, 10); } [32/33]
실행결과 : click 1 텍스트상자에글자를입력하고 [ 출력 ] 버튼클릭. click 2 프릮터를선택하고 [ 확인 ] 버튼클릭하면문서가출력됨. [33/33]