×

TreeNode

前端技术网 前端技术网 发表于2024-01-20 07:44:38 浏览3473 评论0

抢沙发发表评论

一、TreeNode.Tag到底是什么意思

很久没做C#了。没记错的话, tag应该是一个object吧。 tag顾名思义标签。你写的这个XXXXX是一个对象。当成一个人来看的话,tag就是随身的口袋。这个口袋你可以放些东西(数据),可以随时拿来使用或者判断。这个数据可以是一个你写的false这个bool的标识量,也可以是其他任何数据对象,只要是从object继承下来的

二、TreeNode.Tag是什么意思,具体点!

在此网站中有详细解释http://msdn.microsoft.com/zh-cn/system.windows.forms.treenode.tag(VS.90).aspx如下:

TreeNode

Tag属性

.NET Framework类库

TreeNode..::.Tag属性

获取或设置包含树节点有关数据的对象。

命名空间: System.Windows.Forms

程序集: System.Windows.Forms(在 System.Windows.Forms.dll中)

TreeNode

语法

<BindableAttribute(True)> _

<TypeConverterAttribute(GetType(StringConverter))> _

Public Property Tag As Object

Get

Set[BindableAttribute(true)][TypeConverterAttribute(typeof(StringConverter))]public Object Tag{ get; set;}[BindableAttribute(true)]

[TypeConverterAttribute(typeof(StringConverter))]

public:

property Object^ Tag{

Object^ get();

void set(Object^ value);

}[<BindableAttribute(true)>]

[<TypeConverterAttribute(typeof(StringConverter))>]

member Tag: Object with get, set

属性值

类型:System..::.Object

Object,包含有关树节点的数据。默认为nullNothingnullptrnull引用(在 Visual Basic中为 Nothing)。

备注

任何 Object派生类型都可被指派给此属性。如果此属性是通过 Windows窗体设计器设置的,则只能指派文本。

示例

下面的代码示例创建一个要为其分配子树节点的根树节点。将 ArrayList中的每个

Customer

对象的一个子树节点以及分配给

Customer

对象的每个

Order

对象的一个子树节点添加到根树节点。将

Customer

对象分配给 Tag属性,并将表示

Customer

对象的树节点用 Orange文本显示。本示例要求已定义

Customer

Order

对象,Form上具有 TreeView控件,还要求有一个名为

customerArray

的 ArrayList,其中包含

Customer

对象。

Public Class Customer

Public CustomerOrders As ArrayList

Public CustomerName As String

Public Sub New(myName As String)

CustomerName= myName

CustomerOrders= New ArrayList()

End Sub'New

End Class'Customer

Public Class Order

Public OrderID As String

Public Sub New(myOrderID As String)

Me.OrderID= myOrderID

End Sub'New

End Class'Order

Public Sub AddRootNodes()

' Add a root node to assign the customer nodes to.

Dim rootNode As TreeNode

rootNode= New TreeNode()

rootNode.Text="CustomerList"

' Add a main root treenode.

myTreeView.Nodes.Add(rootNode)

' Add a root treenode for each Customer object in the ArrayList.

Dim myCustomer As Customer

For Each myCustomer In customerArray

' Add a child treenode for each Order object.

Dim i As Integer= 0

Dim myTreeNodeArray(4) As TreeNode

Dim myOrder As Order

For Each myOrder In myCustomer.CustomerOrders

myTreeNodeArray(i)= New TreeNode(myOrder.OrderID)

i+= 1

Next myOrder

Dim customerNode As New TreeNode(myCustomer.CustomerName, _

myTreeNodeArray)

' Display the customer names with and Orange font.

customerNode.ForeColor= Color.Orange

' Store the Customer object in the Tag property of the TreeNode.

customerNode.Tag= myCustomer

myTreeView.Nodes(0).Nodes.Add(customerNode)

Next myCustomer

End Sub

public class Customer{ public ArrayList CustomerOrders; public string CustomerName; public Customer(string myName){ CustomerName= myName; CustomerOrders= new ArrayList();}}public class Order{ public string OrderID; public Order(string myOrderID){ this.OrderID= myOrderID;}} public void AddRootNodes(){// Add a root node to assign the customer nodes to. TreeNode rootNode= new TreeNode(); rootNode.Text="CustomerList";// Add a main root treenode. myTreeView.Nodes.Add(rootNode);// Add a root treenode for each'Customer' object in the ArrayList. foreach(Customer myCustomer in customerArray){// Add a child treenode for each Order object. int i= 0; TreeNode[] myTreeNodeArray= new TreeNode[5]; foreach(Order myOrder in myCustomer.CustomerOrders){ myTreeNodeArray[i]= new TreeNode(myOrder.OrderID); i++;} TreeNode customerNode= new TreeNode(myCustomer.CustomerName, myTreeNodeArray);// Display the customer names with and Orange font. customerNode.ForeColor= Color.Orange;// Store the Customer object in the Tag property of the TreeNode. customerNode.Tag= myCustomer; myTreeView.Nodes[0].Nodes.Add(customerNode);}}

ref class Customer

{

public:

ArrayList^ CustomerOrders;

String^ CustomerName;

Customer( String^ myName)

{

CustomerName= myName;

CustomerOrders= gcnew ArrayList;

}

};

ref class Order

{

public:

String^ OrderID;

Order( String^ myOrderID)

{

this->OrderID= myOrderID;

}

};

void AddRootNodes()

{

// Add a root node to assign the customer nodes to.

TreeNode^ rootNode= gcnew TreeNode;

rootNode->Text="CustomerList";

// Add a main root treenode.

myTreeView->Nodes->Add( rootNode);

// Add a root treenode for each'Customer' object in the ArrayList.

IEnumerator^ myEnum= customerArray->GetEnumerator();

while( myEnum->MoveNext())

{

Customer^ myCustomer= safe_cast<Customer^>(myEnum->Current);

// Add a child treenode for each Order object.

int i= 0;

array<TreeNode^>^myTreeNodeArray= gcnew array<TreeNode^>(5);

IEnumerator^ myEnum= myCustomer->CustomerOrders->GetEnumerator();

while( myEnum->MoveNext())

{

Order^ myOrder= safe_cast<Order^>(myEnum->Current);

myTreeNodeArray[ i ]= gcnew TreeNode( myOrder->OrderID);

i++;

}

TreeNode^ customerNode= gcnew TreeNode( myCustomer->CustomerName,myTreeNodeArray);

// Display the customer names with and Orange font.

customerNode->ForeColor= Color::Orange;

// Store the Customer Object* in the Tag property of the TreeNode.

customerNode->Tag= myCustomer;

myTreeView->Nodes[ 0 ]->Nodes->Add( customerNode);

}

}

版本信息

.NET Framework

受以下版本支持:4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

平台

Windows 7, Windows Vista SP1或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1或更高版本的服务器核心), Windows Server 2003 SP2

.NET Framework并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework系统要求。

请参见

参考

TreeNode类

System.Windows.Forms命名空间

Object

三、C# TreeNode的使用

首先更正:TreeNode他不是控件,他是一个对象名(节点对象),treeView1才是控件。

TreeNode newNode1= treeView1.Nodes.Add("电话簿");

这句话的意思是,定义一个TreeNode节点类型对象,名称为newNode1,并为他赋值,赋值的内容是:treeView1控件的根节点Nodes,因为本来treeView1控件没有根节点,所以应该先添加根节点Nodes.Add("电话簿")根节点显示的内容就是电话簿。

newNode1.Nodes.Add(sdr[1].ToString());

这个意思是,在根节点newNode1处添加子节点,显示内容是sdr[1].ToString()。

Nodes不是根的意思,是“儿子”的意思。treeView1的Nodes,“儿子”可不就是根节点呗!newNode1.Nodes,这个是儿子的儿子,那就是二级节点了。

文章分享到这里,希望我们关于TreeNode和C# TreeNode的使用的内容能够给您带来一些新的认识和思考。如果您还有其他问题,欢迎继续探索我们的网站或者与我们交流,我们将尽力为您提供满意的答案。