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 會使用 BeginUpdateEndUpdate 方法來隱藏,並在建立和繪製 TreeNode 物件時 TreeView 顯示等候 Cursor 。 此範例會要求您有 Customer 可以保存物件集合的 Order 物件。 它也需要您已在 上 Form 建立 控制項的 TreeView 實例。

// 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

若要顯示樹狀節點旁的影像,請將 指派給父控制項的 屬性,並在 屬性中 ImageList 參考其索引值來指派 ImageTreeViewImageListImageListImageIndex 屬性設定為您想要在處於未選取狀態時 TreeNode 所顯示的索引值 Image 。 同樣地,將 屬性設定 SelectedImageIndex 為您想要在選取 時 TreeNode 顯示的索引值 Image

選取特定的樹狀節點,並使用下列屬性值來逐一查看 Nodes 集合: FirstNode 、、 LastNodeNextNodePrevNodeNextVisibleNodePrevVisibleNode 。 將 TreeNode 上述其中一個屬性傳回的 指派給 屬性, TreeView.SelectedNode 以選取 控制項中的 TreeView 該樹狀節點。

樹狀節點可以展開以顯示下一層子樹狀節點。 使用者可以 TreeNode 按下 旁邊的加號 (+) 按鈕 TreeNode 展開 ,如果顯示 ,或者您可以呼叫 Expand 方法來展開 TreeNode 。 若要展開集合中的所有 Nodes 子樹狀節點層級,請呼叫 ExpandAll 方法。 您可以呼叫 Collapse 方法來折迭子 TreeNode 層級,或者,如果顯示子層級,使用者可以按下 旁邊的減號 () 按鈕 TreeNode 。 您也可以呼叫 Toggle 方法來替代 TreeNode 展開和折迭狀態之間的 。

樹狀節點可以選擇性地顯示覆選框。 若要顯示覆選框,請將 CheckBoxesTreeView 屬性設定為 true 。 屬性 Checked 會針對處於已核取狀態的樹狀節點設定 true 為 。

建構函式

TreeNode()

初始化 TreeNode 類別的新執行個體。

TreeNode(SerializationInfo, StreamingContext)

使用指定的序列化資訊和內容 (Context),初始化 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 控制項中的深度,以零起始。

Name

取得或設定樹狀節點的名稱。

NextNode

取得下一個同層級 (Sibling) 樹狀節點。

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)

建立包含所有相關資訊的物件,這些資訊是產生用來與遠端物件通訊的所需 Proxy。

(繼承來源 MarshalByRefObject)
Deserialize(SerializationInfo, StreamingContext)

從指定的 TreeNode 載入 SerializationInfo 的狀態。

EndEdit(Boolean)

結束樹狀節點標籤的編輯。

EnsureVisible()

請確保樹狀節點是可見的,如有必要請展開樹狀節點和捲動樹狀檢視控制項。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Expand()

展開樹狀節點。

ExpandAll()

展開所有子樹狀節點。

FromHandle(TreeView, IntPtr)

傳回具有指定控制代碼和指派給樹狀檢視控制項的樹狀節點。

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetLifetimeService()
已淘汰.

擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。

(繼承來源 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 所需的資料,填入序列化資訊物件。

適用於

另請參閱