본문 바로가기

C#.NET

트리뷰(TreeView)

계층적인 자료를 표시하는 Control

[실습1- 디자인 환경에서 하는 방법]

아래와 같은 트리구조를 생성하라.

컴퓨터 -

컴퓨터언어 -

C#

   

PHP

 

운영체제 -

Fedora

   

FreeBSD

도서 -

경영과 자기개발

 
 

영어영문학

 

 

 

첫째, 우선 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
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
             //루트노드 사용될 문자열있는 체크
            if (textBox1.Text == "")
            {
                MessageBox.Show("추가할 노드이름을 입력해주세요.");
                textBox1.Focus();
                return;
            }
            //루트노드 추가
            treeView1.Nodes.Add(textBox1.Text);
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            refill();
            //// //회사 조직도 노드 추가
            ////treeView1.Nodes.Add("회사 조직도");

            ////treeView1.Nodes[0].Nodes.Add("개발부");
            ////treeView1.Nodes[0].Nodes.Add("경영기획부");
            ////treeView1.Nodes[0].Nodes.Add("신사업기획부");

            ////treeView1.Nodes[0].Nodes[0].Nodes.Add("한승엽");
            ////treeView1.Nodes[0].Nodes[0].Nodes.Add("김태진");

            ////treeView1.Nodes[0].Nodes[1].Nodes.Add("오금석");
            ////treeView1.Nodes[0].Nodes[1].Nodes.Add("이재명");

            ////treeView1.Nodes[0].Nodes[2].Nodes.Add("송미리");
            ////treeView1.Nodes[0].Nodes[2].Nodes.Add("김현진");
            ////treeView1.Nodes[0].Nodes[2].Nodes.Add("이건욱");
   
            //// //treeView 펼쳐서 보여주기
            ////treeView1.ExpandAll();
        }

         private void refill()
         {
            //회사 조직도 노드 추가
            treeView1.Nodes.Add("회사 조직도");

            treeView1.Nodes[0].Nodes.Add("개발부");
            treeView1.Nodes[0].Nodes.Add("경영기획부");
            treeView1.Nodes[0].Nodes.Add("신사업기획부");

            treeView1.Nodes[0].Nodes[0].Nodes.Add("한승엽");
            treeView1.Nodes[0].Nodes[0].Nodes.Add("김태진");

            treeView1.Nodes[0].Nodes[1].Nodes.Add("오금석");
            treeView1.Nodes[0].Nodes[1].Nodes.Add("이재명");

            treeView1.Nodes[0].Nodes[2].Nodes.Add("송미리");
            treeView1.Nodes[0].Nodes[2].Nodes.Add("김현진");
            treeView1.Nodes[0].Nodes[2].Nodes.Add("이건욱");
   
             //treeView 펼쳐서 보여주기
            treeView1.ExpandAll();
            textBox1.Text = "";
 
         }

        private void button3_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Clear();
            refill();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                MessageBox.Show("추가할 노드이름을 입력해주세요.");
                textBox1.Focus();
                return;
            }
           
            //선택한 노드에 자식노드 추가
            treeView1.SelectedNode.Nodes.Add(textBox1.Text);
            treeView1.ExpandAll();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            //선택한 것만 삭제
            treeView1.SelectedNode.Remove();
        }

      private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {

        }

    }
}

 

실행결과 >

 

'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