Home Full Site
TreeView 컨트롤

TreeView 컨트롤은 계층적인 자료 구조를 나타내 주는 컨트롤이다. 각 TreeView 아이템은 노드(Node)로 불리운다. 부모 노드는 자식 노드들을 Nodes 라는 컬렉션 속성에 추가하며, 각각의 자식 노드는 또한 자식의 자식 노드들을 자식의 Nodes속성에 추가할 수 있다. 이러한 노드 구조로 결국 계층적인 구조를 갖게되는 것이다.


TreeView 컨트롤


TreeView 컨트롤 사용

TreeView 컨트롤은 위에서 말한 바와 같이 Nodes 속성에 자식 노드들을 추가해서 계층적인 구조를 갖춘다. 옵션으로 각 노드마다 이미지를 두 개 붙일 수 있는데, 일반이미지와 선택되었을 때의 이미지를 붙일 수 있다. 아래 예제는 서버 및 네트웍 등 두 개의 카테고리별 자료를 보여주는데, 각 노드 마다 이미지(일반/선택 동일 이미지)를 설정하고 있다. 또한 노드를 선택한 후에 나타나는 AfterSelect라는 이벤트 핸들러에서 선택된 노드의 Key값을 메시지 박스로 보여주는 예이다.

예제

public partial class Form1 : Form
{
   public Form1()
   {
      InitializeComponent();
   }

   private void Form1_Load(object sender, EventArgs e)
   {
      // TreeView에 사용할 ImageList 정의
      ImageList imgList = new ImageList();
      imgList.Images.Add(Bitmap.FromFile("server.jpg"));
      imgList.Images.Add(Bitmap.FromFile("network.jpg"));        
      treeView1.ImageList = imgList;

      // 첫번째 TreeView 아이템 - 서버
      TreeNode svrNode = new TreeNode("서버", 0, 0);
      svrNode.Nodes.Add("SE", "서울 서버", 0, 0);
      svrNode.Nodes.Add("DJ", "대전 서버", 0, 0);
      svrNode.Nodes.Add("BS", "부산 서버", 0, 0);

      // 두번째 TreeView 아이템 - 네트웍
      TreeNode netNode = new TreeNode("네트웍", 1, 1);
      netNode.Nodes.Add("T1", "T1 케이블", 1, 1);
      netNode.Nodes.Add("56K", "56K 모뎀", 1, 1);
      netNode.Nodes.Add("3G", "3G 무선", 1, 1);

      // 2개의 노드를 TreeView에 추가
      treeView1.Nodes.Add(svrNode);
      treeView1.Nodes.Add(netNode);

      // 모든 트리 노드를 보여준다
      treeView1.ExpandAll();
   }

   private void treeView1_AfterSelect(object sender,
             TreeViewEventArgs e)
   {
      string nodeKey = e.Node.Name;
      if (!string.IsNullOrEmpty(nodeKey))
      {
         MessageBox.Show("선택된 노드 키 : " + nodeKey);
      }
   }
}



© csharpstudy.com