TreeNode TreeNode TreeNode TreeNode Class

定义

表示节点的TreeViewRepresents a node of a 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
type TreeNode = class
    inherit MarshalByRefObject
    interface ICloneable
    interface ISerializable
Public Class TreeNode
Inherits MarshalByRefObject
Implements ICloneable, ISerializable
继承
派生
属性
实现

示例

下面的代码示例显示的客户信息TreeView控件。The following code example displays customer information in a TreeView control. 根树节点显示客户名称和子树节点显示分配给每个客户的订单号。The root tree nodes display customer names, and the child tree nodes display the order numbers assigned to each customer. 在此示例中,有 15 个订单显示 1,000 名客户。In this example, 1,000 customers are displayed with 15 orders each. 重新绘制的TreeView通过使用抑制BeginUpdateEndUpdate方法和等待Cursor显示时TreeView创建和绘制TreeNode对象。The repainting of the TreeView is suppressed by using the BeginUpdate and EndUpdate methods, and a wait Cursor is displayed while the TreeView creates and paints the TreeNode objects. 此示例要求具有Customer对象,可以保留一系列Order对象。This example requires that you have a Customer object that can hold a collection of Order objects. 它还需要创建的实例TreeView对的 control 权限FormIt also requires that you have created an instance of a TreeView control on a 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 'End Customer class


Public Class Order
   Inherits [Object]
   Private ordID As String

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

   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 ' End Order 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 'FillMyTreeView

注解

Nodes集合包含所有子TreeNode分配给当前对象TreeNodeThe Nodes collection holds all the child TreeNode objects assigned to the current TreeNode. 可以添加、 删除或克隆TreeNode; 当您这样做时,所有子树中添加、 移除或克隆节点。You can add, remove, or clone a TreeNode; when you do this, all child tree nodes are added, removed, or cloned. 每个TreeNode可以包含一系列其他TreeNode对象。Each TreeNode can contain a collection of other TreeNode objects. 这可以导致难以确定你处于TreeView时循环访问集合。This can make it difficult to determine where you are in the TreeView when iterating through the collection. 若要确定你的树状结构中的位置,请使用FullPath属性。To determine your location in a tree structure, use the FullPath property. FullPath可以使用分析字符串PathSeparator的字符串值来确定何处TreeNode标签的起始和结束。The FullPath string can be parsed using the PathSeparator string value to determine where a TreeNode label begins and ends.

TreeNode通过设置设置标签Text属性显式。The TreeNode label is set by setting the Text property explicitly. 替代方法是使用其中一个树节点TreeNode具有表示一个字符串参数的构造函数Text属性。The alternative is to create the tree node using one of the TreeNode constructors that has a string parameter that represents the Text property. 标签旁边显示TreeNode映像,如果一个显示。The label is displayed next to the TreeNode image, if one is displayed.

若要显示的树节点旁的映像,将分配ImageListImageList的父对象TreeView控制并分配Image通过引用中的索引值ImageList属性。To display images next to the tree nodes, assign an ImageList to the ImageList property of the parent TreeView control and assign an Image by referencing its index value in the ImageList property. 设置ImageIndex的索引值的属性Image想要显示时TreeNode处于选定状态。Set the ImageIndex property to the index value of the Image you want to display when the TreeNode is in an unselected state. 同样,设置SelectedImageIndex的索引值的属性Image想要显示时TreeNode处于选中状态。Likewise, set the SelectedImageIndex property to the index value of the Image you want to display when the TreeNode is selected.

选择特定的树节点,然后循环访问Nodes集合可以通过使用以下属性值: FirstNodeLastNodeNextNodePrevNodeNextVisibleNodePrevVisibleNodeSelecting specific tree nodes and iterating through the Nodes collection can be achieved by using the following property values: FirstNode, LastNode, NextNode, PrevNode, NextVisibleNode, PrevVisibleNode. 将分配TreeNode返回到的上述属性之一TreeView.SelectedNode属性来选择在该树节点TreeView控件。Assign the TreeNode returned by one of aforementioned properties to the TreeView.SelectedNode property to select that tree node in the TreeView control.

可以展开树节点以显示下一级别的子树节点。Tree nodes can be expanded to display the next level of child tree nodes. 用户可以展开TreeNode按加号 (+) 按钮旁边TreeNode,如果显示,则可以展开TreeNode通过调用Expand方法。The user can expand the TreeNode by pressing the plus (+) button next to the TreeNode, if one is displayed, or you can expand the TreeNode by calling the Expand method. 若要展开中的所有子树节点级别Nodes集合,请调用ExpandAll方法。To expand all child tree node levels in the Nodes collection, call the ExpandAll method. 您可以折叠子TreeNode级别通过调用Collapse方法或用户可以按减号 (-) 按钮下, 一步TreeNode,如果一个显示。You can collapse the child TreeNode level by calling the Collapse method, or the user can press the minus (-) button next to the TreeNode, if one is displayed. 您还可以调用Toggle方法进行交替TreeNode之间展开和折叠状态。You can also call the Toggle method to alternate the TreeNode between the expanded and collapsed states.

树节点 (可选) 可以显示一个复选框。Tree nodes can optionally display a check box. 若要显示复选框,请设置CheckBoxes的属性TreeViewtrueTo display the check boxes, set the CheckBoxes property of the TreeView to true. Checked属性设置为true对于树节点处于选中状态。The Checked property is set to true for tree nodes that are in a checked state.

构造函数

TreeNode() TreeNode() TreeNode() TreeNode()

初始化 TreeNode 类的新实例。Initializes a new instance of the TreeNode class.

TreeNode(SerializationInfo, StreamingContext) TreeNode(SerializationInfo, StreamingContext) TreeNode(SerializationInfo, StreamingContext) TreeNode(SerializationInfo, StreamingContext)

初始化的新实例TreeNode类使用指定的序列化信息和上下文。Initializes a new instance of the TreeNode class using the specified serialization information and context.

TreeNode(String) TreeNode(String) TreeNode(String) TreeNode(String)

初始化的新实例TreeNode用指定的标签文本。Initializes a new instance of the TreeNode class with the specified label text.

TreeNode(String, Int32, Int32) TreeNode(String, Int32, Int32) TreeNode(String, Int32, Int32) TreeNode(String, Int32, Int32)

初始化的新实例TreeNode用指定的标签文本以及树节点处于选定和未选定状态时要显示的图像的类。Initializes a new instance of the TreeNode class with the specified label text and images to display when the tree node is in a selected and unselected state.

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

初始化的新实例TreeNode用指定的标签文本、 子树节点和树节点处于选定和未选定状态时要显示的图像。Initializes a new instance of the TreeNode class with the specified label text, child tree nodes, and images to display when the tree node is in a selected and unselected state.

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

初始化的新实例TreeNode类与指定的标签文本和子树节点。Initializes a new instance of the TreeNode class with the specified label text and child tree nodes.

属性

BackColor BackColor BackColor BackColor

获取或设置树节点的背景色。Gets or sets the background color of the tree node.

Bounds Bounds Bounds Bounds

获取树节点的界限。Gets the bounds of the tree node.

Checked Checked Checked Checked

获取或设置一个值,该值指示树节点是否处于选中状态。Gets or sets a value indicating whether the tree node is in a checked state.

ContextMenu ContextMenu ContextMenu ContextMenu

获取与此树节点关联的快捷菜单。Gets the shortcut menu that is associated with this tree node.

ContextMenuStrip ContextMenuStrip ContextMenuStrip ContextMenuStrip

获取或设置与此树节点关联的快捷菜单。Gets or sets the shortcut menu associated with this tree node.

FirstNode FirstNode FirstNode FirstNode

获取树节点集合中的第一个子树节点。Gets the first child tree node in the tree node collection.

ForeColor ForeColor ForeColor ForeColor

获取或设置树节点的前景色。Gets or sets the foreground color of the tree node.

FullPath FullPath FullPath FullPath

获取从根树节点到当前树节点的路径。Gets the path from the root tree node to the current tree node.

Handle Handle Handle Handle

获取树节点的句柄。Gets the handle of the tree node.

ImageIndex ImageIndex ImageIndex ImageIndex

获取或设置当树节点处于选定状态时显示的图像的图像列表索引值。Gets or sets the image list index value of the image displayed when the tree node is in the unselected state.

ImageKey ImageKey ImageKey ImageKey

获取或设置当节点处于未选定状态时,与此树节点关联的图像的键。Gets or sets the key for the image associated with this tree node when the node is in an unselected state.

Index Index Index Index

获取树节点的树节点集合中的位置。Gets the position of the tree node in the tree node collection.

IsEditing IsEditing IsEditing IsEditing

获取一个值,该值指示树节点是否处于可编辑状态。Gets a value indicating whether the tree node is in an editable state.

IsExpanded IsExpanded IsExpanded IsExpanded

获取一个值,该值指示树节点是否处于展开状态。Gets a value indicating whether the tree node is in the expanded state.

IsSelected IsSelected IsSelected IsSelected

获取一个值,该值指示树节点是否处于选定状态。Gets a value indicating whether the tree node is in the selected state.

IsVisible IsVisible IsVisible IsVisible

获取一个值,该值指示树节点是否可见或部分可见。Gets a value indicating whether the tree node is visible or partially visible.

LastNode LastNode LastNode LastNode

获取最后一个子树节点。Gets the last child tree node.

Level Level Level Level

获取树节点中的从零开始的深度TreeView控件。Gets the zero-based depth of the tree node in the TreeView control.

Name Name Name Name

获取或设置树节点的名称。Gets or sets the name of the tree node.

NextNode NextNode NextNode NextNode

获取下一个同级树节点。Gets the next sibling tree node.

NextVisibleNode NextVisibleNode NextVisibleNode NextVisibleNode

获取下一个可见的树节点。Gets the next visible tree node.

NodeFont NodeFont NodeFont NodeFont

获取或设置用于显示树节点标签文本的字体。Gets or sets the font that is used to display the text on the tree node label.

Nodes Nodes Nodes Nodes

获取集合的TreeNode分配给当前树节点对象。Gets the collection of TreeNode objects assigned to the current tree node.

Parent Parent Parent Parent

获取当前树节点的树节点的父级。Gets the parent tree node of the current tree node.

PrevNode PrevNode PrevNode PrevNode

获取上一个同级树节点。Gets the previous sibling tree node.

PrevVisibleNode PrevVisibleNode PrevVisibleNode PrevVisibleNode

获取上一个可见的树节点。Gets the previous visible tree node.

SelectedImageIndex SelectedImageIndex SelectedImageIndex SelectedImageIndex

获取或设置当树节点处于选定状态时显示的图像的图像列表索引值。Gets or sets the image list index value of the image that is displayed when the tree node is in the selected state.

SelectedImageKey SelectedImageKey SelectedImageKey SelectedImageKey

获取或设置处于选定状态时的树节点中显示的图像的键。Gets or sets the key of the image displayed in the tree node when it is in a selected state.

StateImageIndex StateImageIndex StateImageIndex StateImageIndex

获取或设置用于指示的状态的图像的索引TreeNode时父TreeView具有其CheckBoxes属性设置为falseGets or sets the index of the image that is used to indicate the state of the TreeNode when the parent TreeView has its CheckBoxes property set to false.

StateImageKey StateImageKey StateImageKey StateImageKey

获取或设置用于指示的状态的图像的键TreeNode时父TreeView具有其CheckBoxes属性设置为falseGets or sets the key of the image that is used to indicate the state of the TreeNode when the parent TreeView has its CheckBoxes property set to false.

Tag Tag Tag Tag

获取或设置包含树节点有关的数据的对象。Gets or sets the object that contains data about the tree node.

Text Text Text Text

获取或设置树节点标签中显示的文本。Gets or sets the text displayed in the label of the tree node.

ToolTipText ToolTipText ToolTipText ToolTipText

获取或设置当鼠标指针悬停时显示的文本TreeNodeGets or sets the text that appears when the mouse pointer hovers over a TreeNode.

TreeView TreeView TreeView TreeView

获取的父树节点分配到的树视图。Gets the parent tree view that the tree node is assigned to.

方法

BeginEdit() BeginEdit() BeginEdit() BeginEdit()

开始编辑树节点标签。Initiates the editing of the tree node label.

Clone() Clone() Clone() Clone()

将复制的树节点和以此树节点为根的整个子树。Copies the tree node and the entire subtree rooted at this tree node.

Collapse() Collapse() Collapse() Collapse()

折叠树节点。Collapses the tree node.

Collapse(Boolean) Collapse(Boolean) Collapse(Boolean) Collapse(Boolean)

折叠TreeNode并可选择折叠其子。Collapses the TreeNode and optionally collapses its children.

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Deserialize(SerializationInfo, StreamingContext) Deserialize(SerializationInfo, StreamingContext) Deserialize(SerializationInfo, StreamingContext) Deserialize(SerializationInfo, StreamingContext)

加载的状态TreeNode从指定SerializationInfoLoads the state of the TreeNode from the specified SerializationInfo.

EndEdit(Boolean) EndEdit(Boolean) EndEdit(Boolean) EndEdit(Boolean)

结束编辑树节点标签。Ends the editing of the tree node label.

EnsureVisible() EnsureVisible() EnsureVisible() EnsureVisible()

确保树节点可见,请展开树节点和滚动树视图控件,根据需要。Ensures that the tree node is visible, expanding tree nodes and scrolling the tree view control as necessary.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

确定指定的对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(Inherited from Object)
Expand() Expand() Expand() Expand()

展开树节点。Expands the tree node.

ExpandAll() ExpandAll() ExpandAll() ExpandAll()

展开所有子树节点。Expands all the child tree nodes.

FromHandle(TreeView, IntPtr) FromHandle(TreeView, IntPtr) FromHandle(TreeView, IntPtr) FromHandle(TreeView, IntPtr)

返回具有指定的树节点句柄并分配到指定的树视图控件。Returns the tree node with the specified handle and assigned to the specified tree view control.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

作为默认哈希函数。Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

检索控制此实例的生存期策略的当前生存期服务对象。Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetNodeCount(Boolean) GetNodeCount(Boolean) GetNodeCount(Boolean) GetNodeCount(Boolean)

返回子树节点的数目。Returns the number of child tree nodes.

GetType() GetType() GetType() GetType()

获取当前实例的 TypeGets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

获取生存期服务对象来控制此实例的生存期策略。Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

创建当前 MarshalByRefObject 对象的浅表副本。Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
Remove() Remove() Remove() Remove()

从树视图控件中移除当前树节点。Removes the current tree node from the tree view control.

Serialize(SerializationInfo, StreamingContext) Serialize(SerializationInfo, StreamingContext) Serialize(SerializationInfo, StreamingContext) Serialize(SerializationInfo, StreamingContext)

保存的状态TreeNode到指定SerializationInfoSaves the state of the TreeNode to the specified SerializationInfo.

Toggle() Toggle() Toggle() Toggle()

切换到树节点展开或折叠状态。Toggles the tree node to either the expanded or collapsed state.

ToString() ToString() ToString() ToString()

返回表示当前对象的字符串。Returns a string that represents the current object.

显式界面实现

ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext)

使用序列化 TreeNode 时所需的数据填充序列化信息对象。Populates a serialization information object with the data needed to serialize the TreeNode.

适用于

另请参阅