一、目的:自定义TreeNode属性,让控件可以存储更多属性。有利于开发
二、方法:
public class GroupTreeNode : TreeNode
{
private IPAddress ip;
private HostStatus status;
public HostStatus Status
{
set { status = value; }
get { return status; }
}
public IPAddress IP
{
set { ip = value; }
get { return ip; }
}
public GroupTreeNode()
: base()
{
}
public GroupTreeNode(string text, int imageIndex, int selectedImageIndex, IPAddress address)
: base(text, imageIndex, selectedImageIndex)
{
this.ip = address;
}
}
三、应用
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
TreeNode rootNode;
TreeNode channelNode;
GroupTreeNode groupTreeNode;
string sql = "select sysname from sysconfig ";
CMySql mydb = new CMySql();
DataTable dt = new DataTable();
dt = mydb.SelectDt(sql);
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
string mss = String.Format("{0}", row[column]);
rootNode = treeVideo_server.AddRoot(mss, null);
string sql2 = "select servername,ipaddress from serverconfig where sysname='" + mss + "'";
CMySql db2 = new CMySql();
DataTable dt2 = new DataTable();
dt2 = db2.SelectDt(sql2);
foreach (DataRow row2 in dt2.Rows)
{
string name = row2["servername"].ToString();
IPAddress ip = IPAddress.Parse(row2["ipaddress"].ToString());
groupTreeNode = treeVideo_server.AddGroup(name, rootNode, ip);//带有IP地址属性
string sql3 = "select channelname from channelconfig where servername='" + name + "'";
CMySql db3 = new CMySql();
DataTable dt3 = db3.SelectDt(sql3);
foreach (DataRow row3 in dt3.Rows)
{
foreach (DataColumn column3 in dt3.Columns)
{
string mss3 = String.Format("{0}", row3[column3]);
channelNode = treeVideo_server.AddChannel(mss3, groupTreeNode);
}
}
}
}
四、其他
循环访问 TreeView 控件的所有节点
private void PrintRecursive(TreeNode treeNode) { // Print the node. System.Diagnostics.Debug.WriteLine(treeNode.Text); MessageBox.Show(treeNode.Text); // Print each node recursively. foreach (TreeNode tn in treeNode.Nodes) { PrintRecursive(tn); } } // Call the procedure using the TreeView. private void CallRecursive(TreeView treeView) { // Print each node recursively. TreeNodeCollection nodes = treeView.Nodes; foreach (TreeNode n in nodes) { PrintRecursive(n); } }