================================ Outline ====================================
WinForm 만들기
----------------------------------------------------------------------------
p/614 Ch20. Winform으로 만드는 사용자 인터페이스
VB에서 new project windows form application을 연다.


버튼과 텍스트 박스가 생성된 해당 화면을 console을 사용하여 직접 만들어보자.


assemblies -> framework는 C#에서 제공하는
solution은 사용자가 만든 dll파일이다.


//‘form'는 초록색으로 표시되고 이는 클래스를 의미한다.

shift + F5 로 실행하면 해당 화면이 뜬다!

/*** 위의 출력화면 코드 ***/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; //참조한 winform 호출
namespace _20150611_hardcoding
{
class MainApp:Form
{
static void Main(string[] args)
{
MainApp form = new MainApp();
Button button1 = new Button(); //버튼 생성
button1.Text = "button1"; //버튼에 글자 입력
Button button2 = new Button(); //버튼 생성
button2.Text = "button2"; //버튼에 글자 입력
button2.Left = 200; //버튼의 위치를 왼쪽에서 200pixel 이동
form.Controls.Add(button1); //버튼을 화면에 생성
form.Controls.Add(button2); //버튼을 화면에 생성
Application.Run(form); //application initiate:다 만든 후 실행하여야 작성한 내용이 표시된다.
// Application.Run(new MainApp()); //위의 코드와 동일
}
}
}
다시 VB에서 winform을 실행시켜서 코드를 보자.
Application.Run(new Form1()); //애플리케이션을 실행시키는 코드
// button1
//
this.button1.Location = new System.Drawing.Point(0, 0);
this.button1.Name = "button1"
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;
this.button1.Text = "button1"
this.button1.UseVisualStyleBackColor = true
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 262);
this.Controls.Add(this.button1);
this.Name = "Form1"
this.Text = "Form1"
this.ResumeLayout(false);
실제로 버튼과 폼을 만들기 위해서는 위의 코드를 다 쳐 주어야 한다.
버튼을 클릭 했을 때 이벤트가 발생하는 eventHandler를 만들어보자.

//메소드를 나타내는 아이콘

과거에는 Designer.cs 라는 화면이 없었으나 코드가 너무 길이짐에 따라 partial class를 사용하여 코드를 나누어준다.

F12버튼을 누르면 해당 메소드가 구현된 위치로 이동한다.

Application.Exit(); //버튼 안에 삽입하고 application을 종료시키는 기능을 한다.
교재 p/620, 메시지 출력 시 어떠한 매커니즘이 일어나는지 알고 싶다면 읽어보자.
사용자가 조작하는 대로 프로그램이 진행되는 것을 Event Driven Program이라고 한다.
//ctrl + tap 으로 vb안의 탭을 이동할 수 있다.
콤보 박스에서 목차 만드는 법.

교재 p/643의 내용을 따라 WinForm을 만들어보자.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace _20150611_newinform { public partial class Form1 : Form { Random random = new Random(37); //난수 생성
public Form1() { InitializeComponent();
lvDummy.Columns.Add("Name"); lvDummy.Columns.Add("Depth");
}
private void Form1_Load(object sender, EventArgs e) { var Fonts = FontFamily.Families; //운영체제에 설치되어 있는 폰트 목록 검색 foreach (FontFamily font in Fonts) //cboFont 컨트롤에 각 폰트 이름 추가 cboFont.Items.Add(font.Name); }
void ChangeFont() { if (cboFont.SelectedIndex < 0) // cboFont에서 선택한 항목이 없으면 메소드 종료 return;
FontStyle style = FontStyle.Regular; // FontStyle 객체를 초기화합니다.
if (chkBold.Checked) // "굵게"를 체크하면 bold논리합 수행 style |= FontStyle.Bold; if (chkItalic.Checked) // "이탤릭"를 체크하면 bold논리합 수행 style |= FontStyle.Italic;
txtSampleText.Font = // textSampletext의 Font를 앞에서 만든 스타일로 수정 new Font((string)cboFont.SelectedItem, 10, style);
}
private void cboFont_SelectedIndexChanged(object sender, EventArgs e) { ChangeFont(); }
private void chkBold_CheckedChanged(object sender, EventArgs e) { ChangeFont(); }
private void chkItalic_CheckedChanged(object sender, EventArgs e) { ChangeFont(); }
private void txtSampleText_TextChanged(object sender, EventArgs e) {
}
private void tbDummy_Scroll(object sender, EventArgs e) { pgDummy.Value = tbDummy.Value; //슬라이더 위치에 따라 프로그레스바의 내용도 변경 }
private void btnModal_Click(object sender, EventArgs e) { Form frm = new Form(); frm.Text = "Modal Form"; frm.Width = 300; frm.Height = 100; frm.BackColor = Color.Red; frm.ShowDialog(); //Modal 창을 띄웁니다. }
private void btnModaless_Click(object sender, EventArgs e) { Form frm = new Form(); frm.Text = "Modaless Form"; frm.Width = 300; frm.Height = 300; frm.BackColor = Color.Green; frm.Show(); //Modaless 창을 띄웁니다. }
private void btnMsgBox_Click(object sender, EventArgs e) { MessageBox.Show(txtSampleText.Text, "MessageBox Test", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }
void TreeToList() { lvDummy.Items.Clear(); foreach (TreeNode node in tvDummy.Nodes) TreeToList(node); }
void TreeToList(TreeNode Node) { lvDummy.Items.Add(new ListViewItem(new string[] { Node.Text, Node.FullPath.Count(f => f == '\\').ToString() }));
foreach (TreeNode node in Node.Nodes) { TreeToList(node); } }
private void btnAddRoot_Click(object sender, EventArgs e) { tvDummy.Nodes.Add(random.Next().ToString()); TreeToList(); }
private void btnAddChild_Click(object sender, EventArgs e) { if (tvDummy.SelectedNode==null) { MessageBox.Show("선택된 노트가 없습니다.", "TreeView Test", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } tvDummy.SelectedNode.Nodes.Add(random.Next().ToString()); tvDummy.SelectedNode.Expand(); TreeToList(); }
} }
|