TreeNodeCollection 类  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示 TreeNode 对象集合。
public ref class TreeNodeCollection : System::Collections::IList
	public class TreeNodeCollection : System.Collections.IList
	type TreeNodeCollection = class
    interface IList
    interface ICollection
    interface IEnumerable
	Public Class TreeNodeCollection
Implements IList
		- 继承
 - 
				TreeNodeCollection
 
- 实现
 
示例
下面的代码示例在 控件中 TreeView 显示客户信息。 根树节点显示客户名称,子树节点显示分配给每个客户的订单号。 在此示例中,将显示 1,000 个客户,每个客户有 15 个订单。 使用 和 方法抑制 的TreeView重新粉刷,并在 创建和绘制 TreeNode 对象时TreeView显示等待Cursor。EndUpdateBeginUpdate 此示例要求你有一个 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
	注解
通过 Add、 Remove和 RemoveAt 方法,可以从集合中添加和删除单个树节点。
备注
不支持枚举集合和删除节点。
还可以使用 AddRange 或 Clear 方法在集合中添加或删除所有树节点。
类不能从 TreeNodeCollection 类继承。
属性
| Count | 
		 获取集合中 TreeNode 对象的总数。  | 
        	
| IsReadOnly | 
		 获取一个值,该值指示集合是否为只读。  | 
        	
| Item[Int32] | 
		 获取或设置位于集合中指定索引位置处的 TreeNode。  | 
        	
| Item[String] | 
		 获取集合中具有指定键的树节点。  | 
        	
方法
| Add(String) | 
		 将具有指定标签文本的新树节点添加到当前树节点集合的末尾。  | 
        	
| Add(String, String) | 
		 创建具有指定键和文本的新树节点,并将其添加到集合中。  | 
        	
| Add(String, String, Int32) | 
		 创建具有指定键、文本和图像的树节点,并将其添加到集合中。  | 
        	
| Add(String, String, Int32, Int32) | 
		 创建具有指定键、文本和图像的树节点,并将其添加到集合中。  | 
        	
| Add(String, String, String) | 
		 创建具有指定键、文本和图像的树节点,并将其添加到集合中。  | 
        	
| Add(String, String, String, String) | 
		 创建具有指定键、文本和图像的树节点,并将其添加到集合中。  | 
        	
| Add(TreeNode) | 
		 将先前创建的树节点添加到树节点集合的末尾。  | 
        	
| AddRange(TreeNode[]) | 
		 将先前创建的一组树节点添加到集合中。  | 
        	
| Clear() | 
		 从集合中删除所有树节点。  | 
        	
| Contains(TreeNode) | 
		 确定指定的树节点是否为集合的成员。  | 
        	
| ContainsKey(String) | 
		 确定集合是否包含具有指定键的树节点。  | 
        	
| CopyTo(Array, Int32) | 
		 将整个集合复制到现有数组中,从该数组内的指定位置开始复制。  | 
        	
| Equals(Object) | 
		 确定指定对象是否等于当前对象。 (继承自 Object) | 
        	
| Find(String, Boolean) | 
		 查找具有指定键的树节点,可以选择搜索子节点。  | 
        	
| GetEnumerator() | 
		 返回可用于循环访问树节点集合的枚举数。  | 
        	
| GetHashCode() | 
		 作为默认哈希函数。 (继承自 Object) | 
        	
| GetType() | 
		 获取当前实例的 Type。 (继承自 Object) | 
        	
| IndexOf(TreeNode) | 
		 返回集合中指定树节点的索引。  | 
        	
| IndexOfKey(String) | 
		 返回具有指定键的首个树节点的索引。  | 
        	
| Insert(Int32, String) | 
		 创建具有指定文本的树节点,并将其插入指定索引处。  | 
        	
| Insert(Int32, String, String) | 
		 创建具有指定文本和键的树节点,并将其插入集合中。  | 
        	
| Insert(Int32, String, String, Int32) | 
		 创建具有指定键、文本和图像的树节点,并将其插入集合中的指定索引处。  | 
        	
| Insert(Int32, String, String, Int32, Int32) | 
		 创建具有指定键、文本和图像的树节点,并将其插入集合中的指定索引处。  | 
        	
| Insert(Int32, String, String, String) | 
		 创建具有指定键、文本和图像的树节点,并将其插入集合中的指定索引处。  | 
        	
| Insert(Int32, String, String, String, String) | 
		 创建具有指定键、文本和图像的树节点,并将其插入集合中的指定索引处。  | 
        	
| Insert(Int32, TreeNode) | 
		 在树节点集合中的指定位置插入现有树节点。  | 
        	
| MemberwiseClone() | 
		 创建当前 Object 的浅表副本。 (继承自 Object) | 
        	
| Remove(TreeNode) | 
		 从树节点集合中移除指定的树节点。  | 
        	
| RemoveAt(Int32) | 
		 从树节点集合的指定索引处移除树节点。  | 
        	
| RemoveByKey(String) | 
		 从集合中移除具有指定键的树节点。  | 
        	
| ToString() | 
		 返回表示当前对象的字符串。 (继承自 Object) | 
        	
显式接口实现
| ICollection.IsSynchronized | 
		 获取一个值,该值指示对集合的访问是否为同步的(线程安全)。  | 
        	
| ICollection.SyncRoot | 
		 获取可用于同步对集合的访问的对象。  | 
        	
| IList.Add(Object) | 
		 将对象添加到树节点集合的末尾。  | 
        	
| IList.Contains(Object) | 
		 确定指定的树节点是否为集合的成员。  | 
        	
| IList.IndexOf(Object) | 
		 返回集合中指定树节点的索引。  | 
        	
| IList.Insert(Int32, Object) | 
		 在树节点集合中的指定位置插入现有树节点。  | 
        	
| IList.IsFixedSize | 
		 获取一个值,该值指示树节点集合是否具有固定大小。  | 
        	
| IList.Item[Int32] | 
		 获取或设置集合中指定索引处的树节点。  | 
        	
| IList.Remove(Object) | 
		 从树节点集合中移除指定的树节点。  | 
        	
扩展方法
| Cast<TResult>(IEnumerable) | 
		 将 IEnumerable 的元素强制转换为指定的类型。  | 
        	
| OfType<TResult>(IEnumerable) | 
		 根据指定类型筛选 IEnumerable 的元素。  | 
        	
| AsParallel(IEnumerable) | 
		 启用查询的并行化。  | 
        	
| AsQueryable(IEnumerable) | 
		 将 IEnumerable 转换为 IQueryable。  |