계층적인 자료를 표시하는 Control
[실습1- 디자인 환경에서 하는 방법]
아래와 같은 트리구조를 생성하라. | ||||||||||||||||||
|
첫째, 우선 TreeView와 WebBrowser를 선택하여 오른쪽 Form으로 옮긴다. 그리고 속성에서 'Nodes'를 선택하여 Node들을 추가하여 준다.
둘째, Node들을 추가하고, "Tag" 속성에서 해당 Node를 선택했을 때 링크되어질 URL을 입력한다.
셋째, 그림과 같이 번개 모양의 "Event"를 선택한 후 "NodeMouseClick"을 선택하여 Code창으로 이동한다.
넷째, Code 창에서 아래와 같이 해당 Node가 선택되었을 때, WebExplore로 Tag로 설정한 URL 주소가 열리도록 Event를 발생시킨다.
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { //TreeNode는 TreeView의 Node를 나타냄 TreeNode nName = e.Node; //e.Node 클릭된 Node를 의미 string Webpage = ""; //각 Node의 TAG 에 설정된 웹사이트 주소 문자열을 설정 Webpage = (string)nName.Tag; if (Webpage != "") { webBrowser1.Navigate(Webpage); } }
실행결과 >
결과 확인을 위해 F5를 눌러 프로그램을 실행하고, 해당 노드들을 Click 해보면 오른쪽에 웹페이지가 표시되는 것을 확인할 수 있다.
[실습2]디자인 환경은 끝났고, 자동으로 데이터 삽입하기
첫째, New Project를 선택하여 새로운 Form에서 아래와 같이 버튼 Control 과 TreeView Control을 하나 생성한다.
둘째, 위에서 생성한 버튼 Control을 Double Click하여 아래와 같이 버튼이 눌러졌을 때, 발생하게 될 Event를 설정한다.
private void button1_Click(object sender, EventArgs e) { //기존의 모든 트리Node 제거 treeView1.Nodes.Clear(); //Node 추가 TreeNode evenNumbers = treeView1.Nodes.Add("짝수"); TreeNode oddNumbers = treeView1.Nodes.Add("홀수"); for (int i = 1; i < 100; i++) { if (i % 2 == 0) { evenNumbers.Nodes.Add(i.ToString()); } else { oddNumbers.Nodes.Add(i.ToString()); } } }
실행 결과 >
[실습3] Code창 기반에서 Node의 추가 및 삭제를 버튼을 통해 실행한다.
첫째, 아래 그림과 같이 { TreeView & TextBox & Button }Control을 추가하여 준다.( 그림에서는 보이지 않지만, 'ContextMenuStrip'도 추가하여 준다.
둘째, 아래와 같이 소스코드에 내용을 삽입한다.
namespace treeviewex3 private void button1_Click(object sender, EventArgs e) private void Form1_Load(object sender, EventArgs e) refill(); ////treeView1.Nodes[0].Nodes.Add("개발부"); ////treeView1.Nodes[0].Nodes[0].Nodes.Add("한승엽"); ////treeView1.Nodes[0].Nodes[1].Nodes.Add("오금석"); ////treeView1.Nodes[0].Nodes[2].Nodes.Add("송미리"); private void refill() treeView1.Nodes[0].Nodes.Add("개발부"); treeView1.Nodes[0].Nodes[0].Nodes.Add("한승엽"); treeView1.Nodes[0].Nodes[1].Nodes.Add("오금석"); treeView1.Nodes[0].Nodes[2].Nodes.Add("송미리"); private void button3_Click(object sender, EventArgs e) private void button2_Click(object sender, EventArgs e) private void button4_Click(object sender, EventArgs e) private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) } }
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
{
//루트노드 사용될 문자열있는 체크
if (textBox1.Text == "")
{
MessageBox.Show("추가할 노드이름을 입력해주세요.");
textBox1.Focus();
return;
}
//루트노드 추가
treeView1.Nodes.Add(textBox1.Text);
}
{
//// //회사 조직도 노드 추가
////treeView1.Nodes.Add("회사 조직도");
////treeView1.Nodes[0].Nodes.Add("경영기획부");
////treeView1.Nodes[0].Nodes.Add("신사업기획부");
////treeView1.Nodes[0].Nodes[0].Nodes.Add("김태진");
////treeView1.Nodes[0].Nodes[1].Nodes.Add("이재명");
////treeView1.Nodes[0].Nodes[2].Nodes.Add("김현진");
////treeView1.Nodes[0].Nodes[2].Nodes.Add("이건욱");
//// //treeView 펼쳐서 보여주기
////treeView1.ExpandAll();
}
{
//회사 조직도 노드 추가
treeView1.Nodes.Add("회사 조직도");
treeView1.Nodes[0].Nodes.Add("경영기획부");
treeView1.Nodes[0].Nodes.Add("신사업기획부");
treeView1.Nodes[0].Nodes[0].Nodes.Add("김태진");
treeView1.Nodes[0].Nodes[1].Nodes.Add("이재명");
treeView1.Nodes[0].Nodes[2].Nodes.Add("김현진");
treeView1.Nodes[0].Nodes[2].Nodes.Add("이건욱");
//treeView 펼쳐서 보여주기
treeView1.ExpandAll();
textBox1.Text = "";
}
{
treeView1.Nodes.Clear();
refill();
}
{
if (textBox1.Text == "")
{
MessageBox.Show("추가할 노드이름을 입력해주세요.");
textBox1.Focus();
return;
}
//선택한 노드에 자식노드 추가
treeView1.SelectedNode.Nodes.Add(textBox1.Text);
treeView1.ExpandAll();
}
{
//선택한 것만 삭제
treeView1.SelectedNode.Remove();
}
{
}
실행결과 >
|
|
|
|
|
|
'C#.NET' 카테고리의 다른 글
:::::[트랜잭션(Transaction)]::::: (0) | 2009.05.13 |
---|---|
Stored Procedure를 이용한 DB Handling (1) | 2009.05.13 |
클래스 소멸자와 Garbage Collector (0) | 2009.05.08 |
클래스 멤버로의 접근제한하기 (0) | 2009.05.08 |
NotifyIcon (0) | 2009.05.08 |
List View (0) | 2009.05.07 |
DateTimePicker_Control (0) | 2009.05.06 |
Progress Bar (0) | 2009.05.06 |
MDI Form 생성하기 (0) | 2009.05.06 |
Windows Form - 5월6일 (1) | 2009.05.06 |