TreeNode 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示 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 會使用 BeginUpdate 和 EndUpdate 方法來隱藏,並在建立和繪製 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 參考其索引值來指派 Image 。 TreeViewImageListImageList 將 ImageIndex 屬性設定為您想要在處於未選取狀態時 TreeNode 所顯示的索引值 Image 。 同樣地,將 屬性設定 SelectedImageIndex 為您想要在選取 時 TreeNode 顯示的索引值 Image 。
選取特定的樹狀節點,並使用下列屬性值來逐一查看 Nodes 集合: FirstNode 、、 LastNode 、 NextNode 、 PrevNode 、 NextVisibleNode 、 PrevVisibleNode 。 將 TreeNode 上述其中一個屬性傳回的 指派給 屬性, TreeView.SelectedNode 以選取 控制項中的 TreeView 該樹狀節點。
樹狀節點可以展開以顯示下一層子樹狀節點。 使用者可以 TreeNode 按下 旁邊的加號 (+) 按鈕 TreeNode 展開 ,如果顯示 ,或者您可以呼叫 Expand 方法來展開 TreeNode 。 若要展開集合中的所有 Nodes 子樹狀節點層級,請呼叫 ExpandAll 方法。 您可以呼叫 Collapse 方法來折迭子 TreeNode 層級,或者,如果顯示子層級,使用者可以按下 旁邊的減號 () 按鈕 TreeNode 。 您也可以呼叫 Toggle 方法來替代 TreeNode 展開和折迭狀態之間的 。
樹狀節點可以選擇性地顯示覆選框。 若要顯示覆選框,請將 CheckBoxes 的 TreeView 屬性設定為 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 |
取得或設定影像的索引,用於在父代 TreeNode 的 TreeView 屬性設為 |
StateImageKey |
取得或設定影像的索引鍵,用於在父代 TreeNode 的 TreeView 屬性設為 |
Tag |
取得或設定包含有關樹狀節點資料的物件。 |
Text |
取得或設定樹狀節點標籤中顯示的文字。 |
ToolTipText |
取得或設定當滑鼠指標停留在 TreeNode 上時將出現的文字。 |
TreeView |
取得指派給樹狀節點的父樹狀檢視。 |
方法
明確介面實作
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
以序列化 TreeNode 所需的資料,填入序列化資訊物件。 |