다음을 통해 공유


TreeNode 클래스

정의

TreeView의 노드를 나타냅니다.

public ref class TreeNode : MarshalByRefObject, ICloneable, System::Runtime::Serialization::ISerializable
[System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.TreeNodeConverter))]
[System.Serializable]
public class TreeNode : MarshalByRefObject, ICloneable, System.Runtime.Serialization.ISerializable
[<System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.TreeNodeConverter))>]
[<System.Serializable>]
type TreeNode = class
    inherit MarshalByRefObject
    interface ICloneable
    interface ISerializable
Public Class TreeNode
Inherits MarshalByRefObject
Implements ICloneable, ISerializable
상속
파생
특성
구현

예제

다음 코드 예제에서는 컨트롤에 고객 정보를 표시 합니다 TreeView . 루트 트리 노드는 고객 이름을 표시하고 자식 트리 노드는 각 고객에게 할당된 주문 번호를 표시합니다. 이 예제에서는 1,000명의 고객이 각각 15개의 주문으로 표시됩니다. 의 TreeView 다시 그리기는 및 EndUpdate 메서드를 사용하여 BeginUpdate 표시되지 않으며 가 개체를 만들고 그리는 동안 TreeView 대기 CursorTreeNode 표시됩니다. 이 예제에서는 Customer 개체 컬렉션을 Order 보유할 수 있는 개체가 있어야 합니다. 또한 에 컨트롤의 인스턴스를 TreeView 만들어야 합니다 Form.

// The basic Customer class.
ref class Customer: public System::Object
{
private:
   String^ custName;

protected:
   ArrayList^ custOrders;

public:
   Customer( String^ customername )
   {
      custName = "";
      custOrders = gcnew ArrayList;
      this->custName = customername;
   }


   property String^ CustomerName 
   {
      String^ get()
      {
         return this->custName;
      }

      void set( String^ value )
      {
         this->custName = value;
      }

   }

   property ArrayList^ CustomerOrders 
   {
      ArrayList^ get()
      {
         return this->custOrders;
      }

   }

};


// End Customer class
// The basic customer Order class.
ref class Order: public System::Object
{
private:
   String^ ordID;

public:
   Order( String^ orderid )
   {
      ordID = "";
      this->ordID = orderid;
   }


   property String^ OrderID 
   {
      String^ get()
      {
         return this->ordID;
      }

      void set( String^ value )
      {
         this->ordID = value;
      }

   }

};
// End Order class



void FillMyTreeView()
{
   // Add customers to the ArrayList of Customer objects.
   for ( int x = 0; x < 1000; x++ )
   {
      customerArray->Add( gcnew Customer( "Customer " + x ) );
   }
   
   // Add orders to each Customer object in the ArrayList.
   IEnumerator^ myEnum = customerArray->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Customer^ customer1 = safe_cast<Customer^>(myEnum->Current);
      for ( int y = 0; y < 15; y++ )
      {
         customer1->CustomerOrders->Add( gcnew Order( "Order " + y ) );
      }
   }

   // Display a wait cursor while the TreeNodes are being created.
   ::Cursor::Current = gcnew System::Windows::Forms::Cursor( "MyWait.cur" );
   
   // Suppress repainting the TreeView until all the objects have been created.
   treeView1->BeginUpdate();
   
   // Clear the TreeView each time the method is called.
   treeView1->Nodes->Clear();
   
   // Add a root TreeNode for each Customer object in the ArrayList.
   myEnum = customerArray->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Customer^ customer2 = safe_cast<Customer^>(myEnum->Current);
      treeView1->Nodes->Add( gcnew TreeNode( customer2->CustomerName ) );
      
      // Add a child treenode for each Order object in the current Customer object.
      IEnumerator^ myEnum = customer2->CustomerOrders->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Order^ order1 = safe_cast<Order^>(myEnum->Current);
         treeView1->Nodes[ customerArray->IndexOf( customer2 ) ]->Nodes->Add( gcnew TreeNode( customer2->CustomerName + "." + order1->OrderID ) );
      }
   }
   
   // Reset the cursor to the default for all controls.
   ::Cursor::Current = Cursors::Default;
   
   // Begin repainting the TreeView.
   treeView1->EndUpdate();
}

// The basic Customer class.
public class Customer : System.Object
{
   private string custName = "";
   protected ArrayList custOrders = new ArrayList();

   public Customer(string customername)
   {
      this.custName = customername;
   }

   public string CustomerName
   {      
      get{return this.custName;}
      set{this.custName = value;}
   }

   public ArrayList CustomerOrders 
   {
      get{return this.custOrders;}
   }
} // End Customer class 

// The basic customer Order class.
public class Order : System.Object
{
   private string ordID = "";

   public Order(string orderid)
   {
      this.ordID = orderid;
   }

   public string OrderID
   {      
      get{return this.ordID;}
      set{this.ordID = value;}
   }
} // End Order class

// Create a new ArrayList to hold the Customer objects.
private ArrayList customerArray = new ArrayList(); 

private void FillMyTreeView()
{
   // Add customers to the ArrayList of Customer objects.
   for(int x=0; x<1000; x++)
   {
      customerArray.Add(new Customer("Customer" + x.ToString()));
   }

   // Add orders to each Customer object in the ArrayList.
   foreach(Customer customer1 in customerArray)
   {
      for(int y=0; y<15; y++)
      {
         customer1.CustomerOrders.Add(new Order("Order" + y.ToString()));    
      }
   }

   // Display a wait cursor while the TreeNodes are being created.
   Cursor.Current = new Cursor("MyWait.cur");
        
   // Suppress repainting the TreeView until all the objects have been created.
   treeView1.BeginUpdate();

   // Clear the TreeView each time the method is called.
   treeView1.Nodes.Clear();

   // Add a root TreeNode for each Customer object in the ArrayList.
   foreach(Customer customer2 in customerArray)
   {
      treeView1.Nodes.Add(new TreeNode(customer2.CustomerName));
          
      // Add a child treenode for each Order object in the current Customer object.
      foreach(Order order1 in customer2.CustomerOrders)
      {
         treeView1.Nodes[customerArray.IndexOf(customer2)].Nodes.Add(
           new TreeNode(customer2.CustomerName + "." + order1.OrderID));
      }
   }

   // Reset the cursor to the default for all controls.
   Cursor.Current = Cursors.Default;

   // Begin repainting the TreeView.
   treeView1.EndUpdate();
}
Public Class Customer
   Inherits [Object]
   Private custName As String = ""
   Friend custOrders As New ArrayList()

   Public Sub New(ByVal customername As String)
      Me.custName = customername
   End Sub

   Public Property CustomerName() As String
      Get
         Return Me.custName
      End Get
      Set(ByVal Value As String)
         Me.custName = Value
      End Set
   End Property

   Public ReadOnly Property CustomerOrders() As ArrayList
      Get
         Return Me.custOrders
      End Get
   End Property
End Class


Public Class Order
   Inherits [Object]
   Private ordID As String

   Public Sub New(ByVal orderid As String)
      Me.ordID = orderid
   End Sub

   Public Property OrderID() As String
      Get
         Return Me.ordID
      End Get
      Set(ByVal Value As String)
         Me.ordID = Value
      End Set
   End Property
End Class

' Create a new ArrayList to hold the Customer objects.
Private customerArray As New ArrayList()

Private Sub FillMyTreeView()
   ' Add customers to the ArrayList of Customer objects.
   Dim x As Integer
   For x = 0 To 999
      customerArray.Add(New Customer("Customer" + x.ToString()))
   Next x

   ' Add orders to each Customer object in the ArrayList.
   Dim customer1 As Customer
   For Each customer1 In customerArray
      Dim y As Integer
      For y = 0 To 14
         customer1.CustomerOrders.Add(New Order("Order" + y.ToString()))
      Next y
   Next customer1

   ' Display a wait cursor while the TreeNodes are being created.
   Cursor.Current = New Cursor("MyWait.cur")

   ' Suppress repainting the TreeView until all the objects have been created.
   treeView1.BeginUpdate()

   ' Clear the TreeView each time the method is called.
   treeView1.Nodes.Clear()

   ' Add a root TreeNode for each Customer object in the ArrayList.
   Dim customer2 As Customer
   For Each customer2 In customerArray
      treeView1.Nodes.Add(New TreeNode(customer2.CustomerName))

      ' Add a child TreeNode for each Order object in the current Customer object.
      Dim order1 As Order
      For Each order1 In customer2.CustomerOrders
         treeView1.Nodes(customerArray.IndexOf(customer2)).Nodes.Add( _
    New TreeNode(customer2.CustomerName + "." + order1.OrderID))
      Next order1
   Next customer2

   ' Reset the cursor to the default for all controls.
   Cursor.Current = System.Windows.Forms.Cursors.Default

   ' Begin repainting the TreeView.
   treeView1.EndUpdate()
End Sub

설명

컬렉션은 Nodes 현재 TreeNode에 할당된 모든 자식 TreeNode 개체를 보유합니다. 를 추가, 제거 또는 복제 TreeNode할 수 있습니다. 이렇게 하면 모든 자식 트리 노드가 추가, 제거 또는 복제됩니다. 각각 TreeNode 은 다른 TreeNode 개체의 컬렉션을 포함할 수 있습니다. 이렇게 하면 컬렉션을 반복할 때 의 TreeView 위치를 결정하기 어려울 수 있습니다. 트리 구조에서 위치를 확인하려면 속성을 사용합니다 FullPath . 문자열 값을 FullPath 사용하여 PathSeparator 문자열을 구문 분석하여 레이블이 TreeNode 시작되고 끝나는 위치를 확인할 수 있습니다.

레이블은 TreeNode 속성을 명시적으로 설정 Text 하여 설정합니다. 대신 속성을 나타내는 문자열 매개 변수가 있는 생성자 중 TreeNode 하나를 사용하여 트리 노드를 Text 만듭니다. 레이블이 표시되는 경우 이미지 옆에 TreeNode 표시됩니다.

트리 노드 옆에 이미지를 표시하려면 부모 TreeView 컨트롤의 속성에 ImageListImageList 할당하고 속성에서 인덱스 값을 ImageList 참조하여 를 할당 Image 합니다. ImageIndex 속성을 가 선택되지 않은 상태일 때 TreeNode 표시할 의 Image 인덱스 값으로 설정합니다. 마찬가지로 속성을 가 선택될 때 TreeNode 표시할 의 Image 인덱스 값으로 설정합니다SelectedImageIndex.

특정 트리 노드를 선택하고 컬렉션을 반복하는 Nodes 작업은 , , , NextVisibleNodePrevVisibleNodeLastNodePrevNodeNextNode속성 값을 FirstNode사용하여 수행할 수 있습니다. TreeNode 앞서 언급한 속성 중 하나에서 반환된 를 속성에 TreeView.SelectedNode 할당하여 컨트롤에서 해당 트리 노드를 TreeView 선택합니다.

트리 노드를 확장하여 다음 수준의 자식 트리 노드를 표시할 수 있습니다. 사용자가 옆에 있는 더하기(+) 단추를 TreeNode눌러 를 확장 TreeNode 할 수 있습니다(표시되는 경우). 또는 메서드를 Expand 호출하여 를 TreeNode 확장할 수 있습니다. 컬렉션의 Nodes 모든 자식 트리 노드 수준을 확장하려면 메서드를 호출합니다 ExpandAll . 메서드를 호출 Collapse 하여 자식 TreeNode 수준을 축소하거나, 가 표시되는 경우 사용자가 옆에 TreeNode있는 빼기(-) 단추를 누를 수 있습니다. 메서드를 Toggle 호출하여 확장된 상태와 축소된 상태 간에 를 번갈아 TreeNode 사용할 수도 있습니다.

트리 노드는 필요에 따라 확인란을 표시할 수 있습니다. 확인란을 표시하려면 의 CheckBoxesTreeViewtrue속성을 로 설정합니다. 속성은 Checked 선택된 상태에 있는 트리 노드에 대해 로 설정 true 됩니다.

생성자

TreeNode()

TreeNode 클래스의 새 인스턴스를 초기화합니다.

TreeNode(SerializationInfo, StreamingContext)

지정된 serialization 정보와 컨텍스트를 사용하여 TreeNode 클래스의 새 인스턴스를 초기화합니다.

TreeNode(String)

지정된 레이블 텍스트를 사용하여 TreeNode 클래스의 새 인스턴스를 초기화합니다.

TreeNode(String, Int32, Int32)

트리 노드가 선택 상태 또는 선택하지 않은 상태에 있을 때 표시할 지정된 레이블 텍스트와 이미지를 사용하여 TreeNode 클래스의 새 인스턴스를 초기화합니다.

TreeNode(String, Int32, Int32, TreeNode[])

트리 노드가 선택 상태 또는 선택하지 않은 상태에 있을 때 표시할 지정된 레이블 텍스트, 자식 트리 노드 및 이미지를 사용하여 TreeNode 클래스의 새 인스턴스를 초기화합니다.

TreeNode(String, TreeNode[])

지정된 레이블 텍스트와 자식 트리 노드를 사용하여 TreeNode 클래스의 새 인스턴스를 초기화합니다.

속성

BackColor

트리 노드의 배경색을 가져오거나 설정합니다.

Bounds

트리 노드의 경계를 가져옵니다.

Checked

트리 노드가 선택되어 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

ContextMenu

이 트리 노드와 연결된 바로 가기 메뉴를 가져옵니다.

ContextMenuStrip

이 트리 노드와 연결된 바로 가기 메뉴를 가져오거나 설정합니다.

FirstNode

트리 노드 컬렉션에 있는 첫째 자식 트리 노드를 가져옵니다.

ForeColor

트리 노드의 전경색을 가져오거나 설정합니다.

FullPath

루트 트리 노드에서 현재 트리 노드까지의 경로를 가져옵니다.

Handle

트리 노드의 핸들을 가져옵니다.

ImageIndex

트리 노드를 선택하지 않은 상태일 때 표시되는 이미지의 이미지 목록 인덱스 값을 가져오거나 설정합니다.

ImageKey

트리 노드가 선택되지 않은 상태일 때 이 트리 노드와 연결된 이미지의 키를 가져오거나 설정합니다.

Index

트리 노드 컬렉션에 있는 트리 노드의 위치를 가져옵니다.

IsEditing

트리 노드가 편집 가능한 상태에 있는지 여부를 나타내는 값을 가져옵니다.

IsExpanded

트리 노드가 확장된 상태에 있는지 여부를 나타내는 값을 가져옵니다.

IsSelected

트리 노드가 선택 상태에 있는지 여부를 나타내는 값을 가져옵니다.

IsVisible

트리 노드의 전체 또는 일부가 표시되는지 여부를 나타내는 값을 가져옵니다.

LastNode

마지막 자식 트리 노드를 가져옵니다.

Level

TreeView 컨트롤에 있는 트리 노드의 0부터 시작하는 깊이를 가져옵니다.

Name

트리 노드의 이름을 가져오거나 설정합니다.

NextNode

다음 형제 트리 노드를 가져옵니다.

NextVisibleNode

다음의 표시되는 트리 노드를 가져옵니다.

NodeFont

트리 노드의 레이블에 텍스트를 표시하기 위해 사용된 글꼴을 가져오거나 설정합니다.

Nodes

현재 트리 노드에 할당된 TreeNode 개체의 컬렉션을 가져옵니다.

Parent

현재 트리 노드의 부모 트리 노드를 가져옵니다.

PrevNode

이전 형제 트리 노드를 가져옵니다.

PrevVisibleNode

이전에 표시되는 트리 노드를 가져옵니다.

SelectedImageIndex

트리 노드를 선택한 상태일 때 표시되는 이미지의 이미지 목록 인덱스 값을 가져오거나 설정합니다.

SelectedImageKey

트리 노드가 선택된 상태일 때 표시되는 이미지의 키를 가져오거나 설정합니다.

StateImageIndex

부모 TreeNodeTreeView 속성이 false로 설정된 경우 CheckBoxes의 상태를 나타내는 데 사용되는 이미지의 인덱스를 가져오거나 설정합니다.

StateImageKey

부모 TreeNodeTreeView 속성이 false로 설정된 경우 CheckBoxes의 상태를 나타내는 데 사용되는 이미지의 키를 가져오거나 설정합니다.

Tag

트리 노드에 대한 데이터가 들어 있는 개체를 가져오거나 설정합니다.

Text

트리 노드의 레이블에 표시할 텍스트를 가져오거나 설정합니다.

ToolTipText

마우스 포인터로 TreeNode를 가리키면 나타나는 텍스트를 가져오거나 설정합니다.

TreeView

트리 노드가 할당된 부모 트리 뷰를 가져옵니다.

메서드

BeginEdit()

트리 노드 레이블의 편집을 초기화합니다.

Clone()

트리 노드와 이 트리 노드에서 시작하는 전체 하위 트리를 복사합니다.

Collapse()

트리 노드를 축소합니다.

Collapse(Boolean)

TreeNode를 축소하고 선택적으로 해당 자식을 축소합니다.

CreateObjRef(Type)

원격 개체와 통신하는 데 사용되는 프록시 생성에 필요한 모든 관련 정보가 들어 있는 개체를 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
Deserialize(SerializationInfo, StreamingContext)

지정된 TreeNode에서 SerializationInfo의 상태를 로드합니다.

EndEdit(Boolean)

트리 노드 레이블의 편집을 마칩니다.

EnsureVisible()

트리 노드가 표시되고 확장되며 트리 뷰 컨트롤이 충분히 스크롤되는지 확인합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
Expand()

트리 노드를 확장합니다.

ExpandAll()

자식 트리 노드를 모두 확장합니다.

FromHandle(TreeView, IntPtr)

지정된 핸들을 사용하여 지정된 트리 뷰 컨트롤에 할당된 트리 노드를 반환합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 현재의 수명 서비스 개체를 검색합니다.

(다음에서 상속됨 MarshalByRefObject)
GetNodeCount(Boolean)

자식 트리 노드의 수를 반환합니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
InitializeLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 수명 서비스 개체를 가져옵니다.

(다음에서 상속됨 MarshalByRefObject)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
MemberwiseClone(Boolean)

현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
Remove()

트리 뷰 컨트롤에서 현재 트리 노드를 제거합니다.

Serialize(SerializationInfo, StreamingContext)

TreeNode의 상태를 지정된 SerializationInfo에 저장합니다.

Toggle()

트리 노드를 확장된 상태 또는 축소된 상태로 설정/해제합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

명시적 인터페이스 구현

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

TreeNode을 serialize하는 데 필요한 데이터로 serialization 정보 개체를 채웁니다.

적용 대상

추가 정보