一、目的:自定义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;
        }
    }

三、应用

            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);
}
}

相关文章:

  • 2021-12-06
  • 2022-12-23
  • 2022-12-23
  • 2021-10-21
  • 2021-09-18
  • 2021-04-20
  • 2021-12-24
  • 2021-08-14
猜你喜欢
  • 2022-12-23
  • 2021-07-29
  • 2021-12-06
  • 2022-12-23
相关资源
相似解决方案