在類別顯示的時候,我們往往會選擇樹狀的形式展現出來,這個很常見,我們來看看在winForm中如何綁定
在winForm的控件中,已經為我們提供了一個樹狀展示的控件TreeView,這個用起來很方便,只要記住幾點就可以很好完成數據的綁定
首先,TreeView的節點是TreeNode,每一個節點都是一個TreeNode對象
其次、完成對每個TreeNode對象的屬性綁定
然后、可以通過TreeNode的Nodes.add(treeNode)添加子節點
最后、將節點綁定到TreeVIew上 如:treeView1.Nodes.Add(treeNode);
看看下面的例子就一目了然了

public
void BindTreeView()
{
// 根節點
TreeNode treeNode = new TreeNode();
treeNode.Name = " 節點名稱 ";
treeNode.Text = " 根節點 ";
// 根節點下面的子節點
TreeNode node1 = new TreeNode();
node1.Text = " 第二個節點1 ";
TreeNode node2 = new TreeNode();
node2.Text = " 第二個節點2 ";
TreeNode node3 = new TreeNode();
node3.Text = " 第二個節點3 ";
TreeNode node4 = new TreeNode();
node4.Text = " 第二個節點4 ";
// 將節點添加到根節點中
treeNode.Nodes.Add(node1);
treeNode.Nodes.Add(node2);
treeNode.Nodes.Add(node3);
treeNode.Nodes.Add(node4);
// 為第二個子節點1添加子節點
TreeNode childNode1= new TreeNode();
childNode1.Text= " 子節點1-1 ";
TreeNode childNode2= new TreeNode();
childNode2.Text= " 子節點1-2 ";
TreeNode childNode3= new TreeNode();
childNode3.Text= " 子節點1-3 ";
node1.Nodes.Add(childNode1);
node1.Nodes.Add(childNode2);
node1.Nodes.Add(childNode3);
// 為第二個子節點2添加子節點
TreeNode childNode4 = new TreeNode();
childNode4.Text = " 子節點2-1 ";
TreeNode childNode5 = new TreeNode();
childNode5.Text = " 子節點2-2 ";
TreeNode childNode6 = new TreeNode();
childNode6.Text = " 子節點2-3 ";
node2.Nodes.Add(childNode4);
node2.Nodes.Add(childNode5);
node2.Nodes.Add(childNode6);
// 將根節點添加到TreeView中
treeView1.Nodes.Add(treeNode);
treeView1.ExpandAll();
}
{
// 根節點
TreeNode treeNode = new TreeNode();
treeNode.Name = " 節點名稱 ";
treeNode.Text = " 根節點 ";
// 根節點下面的子節點
TreeNode node1 = new TreeNode();
node1.Text = " 第二個節點1 ";
TreeNode node2 = new TreeNode();
node2.Text = " 第二個節點2 ";
TreeNode node3 = new TreeNode();
node3.Text = " 第二個節點3 ";
TreeNode node4 = new TreeNode();
node4.Text = " 第二個節點4 ";
// 將節點添加到根節點中
treeNode.Nodes.Add(node1);
treeNode.Nodes.Add(node2);
treeNode.Nodes.Add(node3);
treeNode.Nodes.Add(node4);
// 為第二個子節點1添加子節點
TreeNode childNode1= new TreeNode();
childNode1.Text= " 子節點1-1 ";
TreeNode childNode2= new TreeNode();
childNode2.Text= " 子節點1-2 ";
TreeNode childNode3= new TreeNode();
childNode3.Text= " 子節點1-3 ";
node1.Nodes.Add(childNode1);
node1.Nodes.Add(childNode2);
node1.Nodes.Add(childNode3);
// 為第二個子節點2添加子節點
TreeNode childNode4 = new TreeNode();
childNode4.Text = " 子節點2-1 ";
TreeNode childNode5 = new TreeNode();
childNode5.Text = " 子節點2-2 ";
TreeNode childNode6 = new TreeNode();
childNode6.Text = " 子節點2-3 ";
node2.Nodes.Add(childNode4);
node2.Nodes.Add(childNode5);
node2.Nodes.Add(childNode6);
// 將根節點添加到TreeView中
treeView1.Nodes.Add(treeNode);
treeView1.ExpandAll();
}
下面來看一個將xml文件的數據讀取到樹上的例子
xml文件

<?
xml version="1.0" encoding="utf-8"
?>
< Users >
< User id ="0" >
< Name >Jeffrey </ Name >
< Sex >男 </ Sex >
< UserName >Jeffrey </ UserName >
</ User >
< User id ="1" >
< Name >Tom </ Name >
< Sex >男 </ Sex >
< UserName >tom </ UserName >
</ User >
< User id ="2" >
< Name >Jef </ Name >
< Sex >男 </ Sex >
< UserName >jef </ UserName >
</ User >
< User id ="3" >
< Name >1 </ Name >
< Sex >1 </ Sex >
< UserName >1 </ UserName >
</ User >
</ Users >
< Users >
< User id ="0" >
< Name >Jeffrey </ Name >
< Sex >男 </ Sex >
< UserName >Jeffrey </ UserName >
</ User >
< User id ="1" >
< Name >Tom </ Name >
< Sex >男 </ Sex >
< UserName >tom </ UserName >
</ User >
< User id ="2" >
< Name >Jef </ Name >
< Sex >男 </ Sex >
< UserName >jef </ UserName >
</ User >
< User id ="3" >
< Name >1 </ Name >
< Sex >1 </ Sex >
< UserName >1 </ UserName >
</ User >
</ Users >
讀取並綁定到TreeView上

public
void bindXmltoTreeView()
{
XmlDocument xdoc = new XmlDocument();
xdoc.Load(System.Environment.CurrentDirectory + " \\UsersXml.xml ");
XmlNodeList xnodeList = xdoc.SelectNodes( " //User ");
TreeNode parentNode = new TreeNode( " 根節點 ");
treeView2.Nodes.Add(parentNode);
foreach (XmlNode node in xnodeList)
{
string name = node.ChildNodes.Item( 0).InnerText;
TreeNode tnode = new TreeNode(name);
parentNode.Nodes.Add(tnode);
string Sex = node.ChildNodes.Item( 1).InnerText;
TreeNode tnode1 = new TreeNode(Sex);
tnode.Nodes.Add(tnode1);
string UserName = node.ChildNodes.Item( 2).InnerText;
TreeNode tnode2 = new TreeNode(UserName);
tnode.Nodes.Add(tnode2);
}
treeView2.ExpandAll();
}
{
XmlDocument xdoc = new XmlDocument();
xdoc.Load(System.Environment.CurrentDirectory + " \\UsersXml.xml ");
XmlNodeList xnodeList = xdoc.SelectNodes( " //User ");
TreeNode parentNode = new TreeNode( " 根節點 ");
treeView2.Nodes.Add(parentNode);
foreach (XmlNode node in xnodeList)
{
string name = node.ChildNodes.Item( 0).InnerText;
TreeNode tnode = new TreeNode(name);
parentNode.Nodes.Add(tnode);
string Sex = node.ChildNodes.Item( 1).InnerText;
TreeNode tnode1 = new TreeNode(Sex);
tnode.Nodes.Add(tnode1);
string UserName = node.ChildNodes.Item( 2).InnerText;
TreeNode tnode2 = new TreeNode(UserName);
tnode.Nodes.Add(tnode2);
}
treeView2.ExpandAll();
}
當然了,如果是無限極分類,可以使用遞歸循環就可以了,這里把代碼貼出來,以后方便直接拷貝使用,提供編碼效率