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,并在 创建和绘制TreeNode对象时TreeView显示等待CursorEndUpdateBeginUpdate 此示例要求你有一个 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 设置标签。 替代方法是使用具有表示Text属性的字符串参数的构造函数之TreeNode一创建树节点。 标签显示在图像旁边 TreeNode (如果显示)。

若要在树节点旁边显示图像,请将 分配给ImageList父控件的 属性,并通过在 属性中ImageList引用其索引值来分配 ImageTreeViewImageListImageIndex 属性设置为在 处于未选中状态时TreeNode要显示的 的索引值Image。 同样,将 SelectedImageIndex 属性设置为在选择 时TreeNode要显示的 的索引值Image

可以通过使用以下属性值选择特定的树节点并循环访问Nodes集合:FirstNode、、LastNodeNextNodePrevNodeNextVisibleNodePrevVisibleNodeTreeNode将上述属性之一返回的 分配给 属性,TreeView.SelectedNode以在 控件中选择TreeView该树节点。

树节点可以展开以显示下一级别的子树节点。 用户可以通过TreeNode按 旁边的TreeNode加号 (+) 按钮(如果显示)来展开 ,也可以通过调用 Expand 方法展开 TreeNode 。 若要展开集合中的所有 Nodes 子树节点级别,请 ExpandAll 调用 方法。 可以通过调用 Collapse 方法折叠子TreeNode级别,或者用户可以按 旁边的减 () 按钮TreeNode(如果显示)。 还可以调用 方法, Toggle 在展开状态和折叠状态之间交替 TreeNode

树节点可以选择显示复选框。 若要显示复选框,请将 的 属性设置为 CheckBoxestrueTreeView 对于处于选中状态的树节点,属性 Checked 设置为 true

构造函数

TreeNode()

初始化 TreeNode 类的新实例。

TreeNode(SerializationInfo, StreamingContext)

使用指定的序列化信息和上下文初始化 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

获取下一个同级树节点。

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 时所需的数据填充序列化信息对象。

适用于

另请参阅