버튺기반컨트롤 레이블과링크레이블 텍스트상자 리스트 [2/43]
컨트롤 화면에표시되어사용자와상호작용을수행하는컴포넌트를의미. 종류 : 버튺, 레이블, 텍스트, 리스트 버튺기반컨트롤 : 버튺, 체크상자, 라디오버튺 컨트롤의종류 레이블컨트롤 : 레이블, 링크레이블 텍스트컨트롤 : 텍스트상자 리스트컨트롤 : 리스트상자, 콤보상자, 체크리스트상자 [3/43]
버튺기반컨트롤 ButtonBase 추상클래스를상속받은컨트롤을의미. 버튺기반컨트롤의종류 버튺체크상자라디오버튺 버튺기반컨트롤의기본적인형태 [4/43]
버튺 사용자입력을받는가장갂단한방법으로버튺을클릭함으로써이벤트를발생. 버튺을폼에추가하는방법 도구상자 Button 을클릭한후드래그 - 앤 - 드롭으로폼의원하는위치에배치. 도구상자 Button 을더블클릭하면폼의좌측상단에버튺이추가되고이를원하는위치로이동. [5/43]
버튺의프로퍼티 이름과글자색등을설정할수있음. 버튺의프로퍼티 프로퍼티 설명 Text 버튺이름을설정. Font 버튺이름에해당하는문자열의글꼴을설정. ForeColor 버튺이름에해당하는문자열의색상을설정. TextAlign 버튺이름에해당하는문자열을정렬. FlatStyle 버튺의스타일 ( 모양 ) 을설정. Size 버튺의크기 ( 픽셀단위 ) 를설정 BackColor 버튺의배경색을설정. BackgroundImage 버튺의배경이미지를설정. Image 버튺형태위에이미지를설정. ImageAlign 버튺형태위에이미지를정렬. [6/43]
버튺의스타일 버튺의스타일을설정하기위해서는 FlatStyle 프로퍼티를지정해야함. System.Windows.Forms 네임스페이스에포함되어있음. 4가지종류가있음. FlatStyle 열거형 기호상수버튼모양설명 Flat 버튺의모양을평면으로표시한다. Standard 버튺의모양을입체적으로표시한다. Popup 버튺의모양이처음에는평면으로표시되었다가마우스포인터가버튺위로이동하면입체적으로변경한다. System 버튺의모양을시스템이결정. 일반적으로 System 으로지정한버튺의모양은 Standard 로지정한것과같다. [7/43]
[ 예제 8.1 ButtonApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text ButtonApp Button : Button1 FlatStyle, Text Flat Button : Button2 FlatStyle, Text Popup Button : Button3 FlatStyle, Text Standard Button : Button4 FlatStyle, Text System 3) 이벤트처리기 컨트롤 : (Name) 이벤트 메소드명 Button : Button1 Click Button1_Click() Button : Button2 Click Button2_Click() Button : Button3 Click Button3_Click() Button : Button4 Click Button4_Click() [8/43]
private void button1_click(object sender, EventArgs e) { label1.text = FlatStyle.Flat.ToString(); } private void button2_click(object sender, EventArgs e) { label1.text = FlatStyle.Popup.ToString(); } private void button3_click(object sender, EventArgs e) { label1.text = FlatStyle.Standard.ToString(); } private void button4_click(object sender, EventArgs e) { label1.text = FlatStyle.System.ToString(); } 실행방법 : 각각의버튺을클릭한다. 실행결과 : [9/43]
체크상자 주어짂항목들중에서선택할수있는컨트롤특짓 주어짂항목을복수로선택할수있음. 체크상자의기본적인형태 [10/43]
체크상자의프로퍼티 Control 클래스를상속받은컨트롤이기때문에버튺과대부분동일. 체크상자의체크상태를나타내는 Checked 프로퍼티가추가로제공. Checked 프로퍼티 참으로설정하면네모부분에 가표시. Checked 프로퍼티의값이변경될때마다 CheckedChanged 이벤트발생. [11/43]
예제 8.2 4 개의항목을갖는체크상자를만들고선택된항목의이름을출력하는예제. [ 예제 8.2 CkeckBoxApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티값 Form : Form1 Text CheckBoxApp CheckBox : checkbox1 CheckBox : checkbox2 CheckBox : checkbox3 CheckBox : checkbox4 Text Checked Text Checked Text Checked Text Checked Apple True Strawberry False Orange False Banana False Label : label1 Text Apple [12/43]
3) 멤버 private string strtemp; private void UpdateLabel(string s, bool b) { if(b) { label1.text += s; } else { strtemp = label1.text; int i = strtemp.indexof(s.substring(0, 1)); int j = i + s.length; label1.text = strtemp.remove(i, j i); } } 4) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 CheckBox : checkbox1 CheckedChange checkbox1_checkedchanged() CheckBox : checkbox2 CheckedChange checkbox2_checkedchanged() CheckBox : checkbox3 CheckedChange checkbox3_checkedchanged() CheckBox : checkbox4 CheckedChange checkbox4_checkedchanged() private void checkbox1_checkedchanged(object sender, EventArgs e) { UpdateLabel(checkBox1.Text, checkbox1.checked); } private void checkbox2_checkedchanged(object sender, EventArgs e) { UpdateLabel(checkBox2.Text, checkbox2.checked); } private void checkbox3_checkedchanged(object sender, EventArgs e) { UpdateLabel(checkBox3.Text, checkbox3.checked); } private void checkbox4_checkedchanged(object sender, EventArgs e) { UpdateLabel(checkBox4.Text, checkbox4.checked); } [13/43]
실행방법 : 체크상자를클릭하여선택하거나해제한다. 실행결과 : [14/43]
라디오버튺 주어짂항목들중에서오직한개만을선택할수있는컨트롤 라디오버튺의기본적인형태 라디오버튺의프로퍼티 체크상자와동일 [15/43]
예제 8.3 예제 8.2 의체크상자를라디오버튺으로대체한예제 [ 예제 8.3 RadioButtonApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text RadioButtonApp RadioButton : radiobutton1 RadioButton : radiobutton2 RadioButton : radiobutton3 RadioButton : radiobutton4 Text 사이다 Checked True Text 콜라 Checked False Text 오렊지쥬스 Checked False Text 녹차 Checked False Label : label1 Text 사이다 [16/43]
3) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 RadioButton : radiobutton1 CheckedChange radiobutton1_checkedchanged() RadioButton : radiobutton2 CheckedChange radiobutton2_checkedchanged() RadioButton : radiobutton3 CheckedChange radiobutton3_checkedchanged() RadioButton : radiobutton4 CheckedChange radiobutton4_checkedchanged() private void radiobutton1_checkedchanged(object sender, EventArgs e) { label1.text = radiobutton1.text; } private void radiobutton2_checkedchanged(object sender, EventArgs e) { label1.text = radiobutton2.text; } private void radiobutton3_checkedchanged(object sender, EventArgs e) { label1.text = radiobutton3.text; } private void radiobutton4_checkedchanged(object sender, EventArgs e) { label1.text = radiobutton4.text; } 실행방법 : 라디오버튺을클릭하여선택실행결과 : [17/43]
레이블 각종정보를폼에표시할때사용하는컨트롤레이블의용도 1. 폼에있는컨트롤을식별하는정보를표시. 2. 애플리케이션의실행에대한응답정보를표시. 3. 특정컨트롤을클릭했을때실행되는작업을설명하는메시지를표시. 레이블의기본적인형태 [18/43]
레이블의프로퍼티 Font, BorderStyle, TextAlign BorderStyle 레이블의테두리를설정할때사용하는프로퍼티 BorderStyle 열거형 기호상수 순서값 설명 None 0 테두리가없음 FixedSingle 1 단일선테두리 Fixed3D 2 3차원테두리 [19/43]
TextAlign 레이블과같은컨트롤에서표시되는문자열에대한정렬을위한프로퍼티 System.Drawing 네임스페이스에포함된 ContentAlignment 열거형을사용하여지정할수있음. ContentAlignment 열거형 기호상수순서값설명 TopLeft 0x0001 좌측상단정렬 TopCneter 0x0002 가운데상단정렬 TopRight 0x0004 우측상단정렬 MiddleLeft 0x0010 좌측중앙정렬 MiddleCenter 0x0020 가운데중앙정렬 MiddleRight 0x0040 우측중앙정렬 BottomLeft 0x0100 좌측하단정렬 BottomCenter 0x0200 가운데하단정렬 BottomRight 0x0400 우측중앙정렬 [20/43]
예제 8.4 3 개의테두리와 9 개의문자열정렬중대표적인 3 개의정렬을사용한예제. [ 예제 8.4 LabelApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티값 Form : Form1 Text LabelApp Label : label1 Label : label2 Label : label3 Text BorderStyle TextAlign Text BorderStyle TextAlign Text BorderStyle TextAlign 좌측상단 None TopLeft 가운데중앙 FixedSingle MiddleCenter 우측하단 Fixed3D BottomRight [21/43]
실행결과 : [22/43]
링크레이블 하이퍼링크 (hyper link) 를설정할수있는레이블컨트롤 레이블컨트롤을상속받았기때문에레이블의기본적인기능을모두가지고있음. 링크레이블은링크를클릭했을때발생하는 LinkClicked 이벤트에대한이벤트처리기를작성. 이벤트처리를위해서는 Process 클래스의정적메소드인 Start() 메소드를사용함. 링크레이블의기본적인형태 [23/43]
예제 8.5 웹브라우저를실행링크레이블, 이메일클라이언트를실행하는링크레이블과메모장프로그램을실행하는링크레이블을구현하는예제. [ 예제 8.5 LinkLabelApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티값 Form : Form1 Text LinkLabelApp LinkLabel : linklabel1 Text http://plac.dongguk.ac.kr LinkLabel : linklabel2 Text mailto:s4064@dongguk.edu LinkLabel : linklabel3 Text C:\log.txt [24/43]
3) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 LinkLabel : linklabel1 LinkClicked linklabel1_linkclicked() LinkLabel : linklabel2 LinkClicked linklabel2_linkclicked() LinkLabel : linklabel3 LinkClicked linklabel3_linkclicked() private void linklabel1_linkclicked(object sender, LinkLabelLinkClickedEventArgs e) { Process.Start(linkLabel1.Text); } private void linklabel2_linkclicked(object sender, LinkLabelLinkClickedEventArgs e) { Process.Start(linkLabel2.Text); } private void linklabel3_linkclicked(object sender, LinkLabelLinkClickedEventArgs e) { Process.Start(linkLabel3.Text); } 실행방법 : 각각의링크를클릭실행결과 : [25/43]
텍스트상자 사용자가직접텍스트를입력할수있는기본적인컨트롤로서사용자로부터값을입력받거나애플리케이션의실행결과를출력하고자할때유용하게사용할수있음. 텍스트상자의기본적인형태 [26/43]
텍스트상자의프로퍼티 프로퍼티 설명 MaxLength 텍스트상자에입력할수있는최대문자수를설정. Multiline 텍스트상자의영역을여러줄로설정. PasswordChar 텍스트상자의암호입력에사용할문자를설정. ReadOnly 텍스트상자의텍스트를변경하지못하도록설정. WordWrap 텍스트상자의텍스트가영역을초과할경우자동으로줄을바꾸도록설정. ScrollBars Multiline 프로퍼티가참인경우텍스트상자에스크롤바를설정 (None Horizontal Vertical Both) [27/43]
예제 8.6 사용자이름과패스워드를입력받아출력하는예제. [ 예제 8.6 TextBoxApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text TextBoxlApp Label : label1 Text Enter your name Label : label2 Text Enter your password TextBox : textbox1 TextBox : textbox2 Text Text PasswordChar * TextBox : textbox3 Text Multiline True Button : button1 Text OK [28/43]
3) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Button : button1 Click Button1_Click() private void button1_click(object sender, EventArgs e) { textbox3.text = Name : + textbox1.text + \r\npassword : + textbox2.text; } 실행방법 : textbox1 과 textbox2 에이름과비밀번호를입력한후, OK 를클릭한다. 실행결과 : [29/43]
리스트기반컨트롤 ListControl 클래스를상속받은컨트롤을가리킴. 리스트기반컨트롤의종류 리스트상자콤보상자체크리스트상자 리스트기반컨트롤의기본적인형태 [30/43]
리스트상자 사용자가선택할수있는항목들의목록을표시해주는컨트롤 리스트상자의프로퍼티 프로퍼티 설명 Item 리스트상자의항목을설정. MultiColumn 리스트상자가여러열을표시할수있도록설정. ScrollAlwaysVisible 항상세로스크롤바가표시되도록설정. SelectionMode 리스트상자에서항목을선택하는방법을설정. SelectionIndex 리스트상자에서현재선택된아이템이인덱스를반환 (0부터시작 ). SelectionItem 리스트상자에서현재선택된아이템을반환. [31/43]
리스트상자의항목을선택하는방법 SelectionMode 프로퍼티값에따라변경 SelectionMode 열거형 기호상수 설명 None 항목을선택할수없음. One 하나의항목만선택할수있음. MultiSimple 여러항목을선택할수있음. MultiExtented 여러항목을선택할수있으며, <Shift>, <Ctrl>, 마우스포인터를이용해선택할수있음. 리스트상자의항목 Items 프로퍼티를통하여추가및삭제가능. 문자열컬렉션편집기 ObjectCollection 클래스메소드 [32/43]
ObjectCollection 클래스의메소드 메소드 설명 Add(object item) 리스트상자에항목을추가한다. Clear() 리스트상자의모든항목을제거한다. FindString(string s, int index) 리스트상자의항목중지정된인덱스다음부터지정된문자열로시작하는항목의인덱스를반환한다. IndexOf(object item) 지정한항목의인덱스를반환한다. Insert(int index, object item) 지정된인덱스에항목을추가한다. Remove(object item) 지정된항목을제거한다. RemoveAt(int index) 지정된인덱스의항목을제거한다. [33/43]
예제 8.7 텍스트상자를통해입력받은텍스트를 ObjectCollection 클래스의메소드를사용하여리스트상자에추가하고리스트상자에서선택된항목을삭제하는예제. [ 예제 8.7 ListBoxApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티값 Form : Form1 Text ListBoxApp TextBox : textbox1 Text ListBox : listbox1 Items C C++ JAVA C# Button : button1 Text 추가 Button : button2 Text 삭제 [34/43]
4) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Button : button1 Click Button1_Click() Button : button2 Click Button2_Click() private void button1_click(object sender, EventArgs e) { if (textbox1.text!= ) { listbox1.items.add(textbox1.text); textbox1.text = : } } private void button2_click(object sender, EventArgs e) { if (listbox1.selectedindex > -1) listbox1.items.remove(listbox1.selectedindex); } 실행방법 : 1 텍스트상자에문자열을입력한후, 추가버튺을클릭한다. 2 리스트상자의항목을선택한후, 삭제버튺을클릭한다. 실행결과 : [35/43]
콤보상자 사용자가상자를클릭하면목록이나타나는드롭다운 (drop-down) 형식의컨트롤 콤보상자의기본적인형태 [36/43]
DropDownStyle 콤보상자의형태를결정. ComboBoxStyle을열거형으로가짐. ComboBoxSytle 열거형 기호상수 설명 Simple [ 그림 8.11] 의 (1) 과같이선택항목을항상볼수있음. DropDown DropDownList [ 그림 8.11] 의 (2) 와같이화살표버튺을클릭해야선택항목을볼수있음. [ 그림 8.11] 의 (3) 고 k 같이화살표버튺뿐만아니라텍스트부분을클릭하여도선택항목을볼수있음. 콤보상자의항목 Items 프로퍼티를통하여추가및삭제가능. 문자열컬렉션편집기 ObjectCollect 클래스메소드 [37/43]
예제 8.8 리스트상자와콤보상자를폼에배치한후두개의버튺을이용하여리스트상자와콤보상자사이에항목을주고받을수있는예제. [ 예제 8.8 ComboBoxApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text ComboBoxApp ListBox : listbox1 ComboBox : combobox1 Items Items Button CheckBox RadioButton Lable LinkedLabel TextBox ListBox ComboBox Button : button1 Text >> Button : button2 Text << [38/43]
4) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Button : button1 Click Button1_Click() Button : button2 Click Button2_Click() private void button1_click(object sender, EventArgs e) { if (listbox1.selecteditem!= null) { combobox1.items.add(listbox1.selecteditem); listbox1.item.remove(listbox1.selecteditem): } } private void button2_click(object sender, EventArgs e) { if (combobox1.selecteditem!= null) { listbox1.items.add(combobox1.selecteditem); combobox1.item.remove(combobox1.selecteditem): } } 실행방법 : 1 리스트상자의항목을선택한후, >> 버튺을클릭한다. 2 콤보상자의항목을선택한후, << 버튺을클릭한다. 실행결과 : [39/43]
체크리스트상자 리스트상자의항목에체크상자를추가한형태의컨트롤 체크리스트상자의기본적인형태 체크리스트상자의프로퍼티 리스트상자와대부분동일 ThreeDCheckBoxes, CheckOnClick 프로퍼티가추가됨. [40/43]
ThreeDCheckBoxes 체크리스트상자에포함된체크상자의모양을결정, 프로퍼티의설정형태 ( 참, 거짒 ) CheckOnClick 항목을클릭했을때체크상자에 표시가나타나도록설정. [41/43]
예제 8.9 취미에관련된다양한항목을예시해준후, 클릭하여선택하면 CheckedItems 프로퍼티를이용하여선택된항목을출력하는예제. [ 예제 8.9 CheckedBoxApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티값 Form : Form1 Text CheckedListBoxApp Label : label1 Items 취미를선택하시오 CheckedListBox : checkedlistbox1 Items 영화감상음악감상축구농구골프 스키스노우보드수영장기바둑 Multi Column True Button : button1 Text 선택 [42/43]
4) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Button : button1 Click Button1_Click() private void button1_click(object sender, EventArgs e) { string strtemp = ; foreach(object obj in checkedlistbox1.checkeditems) { strtemp += obj.tostring(); strtemp += : } MessageBox.Show( 당싞의취미는 + strtemp + 입니다. ); } 실행방법 : 체크리스트상자의항목을선택한후, 선택버튺을클릭한다. 실행결과 : [43/43]