龙空技术网

treeview根据节点级别加上自定义图标

逍遥总遥 546

前言:

眼前各位老铁们对“treeview获取父节点”大致比较关心,朋友们都需要知道一些“treeview获取父节点”的相关文章。那么小编在网络上网罗了一些对于“treeview获取父节点””的相关知识,希望小伙伴们能喜欢,咱们快快来学习一下吧!

效果:1、准备几张自定义图片,我这里因为treeview有3级,所以我准备了3张2、添加一个 imageList 控件

把这3张图片加进去

3、将treeview的imagelist属性选成刚才的imagelist,这样它们就关联起来了4、根据不同级别节点显示不同的图片

using System;using System.Collections;using System.Data;using System.Windows.Forms;namespace mybs{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {            //绑定数据            ResetStreeview();        }        //数据库操作类,这个你得自己去写        //主要就是从数据库中弄数据出来        GO_DB db = new GO_DB(CS.Constr);        void ResetStreeview()        {            //每次绑定先清空            StreeView.Nodes.Clear();            //从库中得到数据            string cmdstr = "select * from dir where type = '2'";            DataTable dt = (DataTable)db.GO_GetAllDatas(cmdstr)[1];            BindTreeView(dt, StreeView.Nodes, null, "TID", "PARENT_ID", "NAME");            //显示自定义图标            SetIcon(StreeView.Nodes);        }        void SetIcon(TreeNodeCollection tc)        {            foreach (TreeNode node in tc)            {                if (node.Tag == null)                {                    node.ImageIndex = node.Level;                    SetIcon(node.Nodes);                }                else                {                    node.ImageIndex = 2;                }                node.SelectedImageIndex = node.ImageIndex;            }        }        private void BindTreeView(DataTable dt, TreeNodeCollection tnc, string pid_val, string id, string pid, string text)        {            TreeNode tn;            string filter = string.IsNullOrEmpty(pid_val) ? pid + " ='0'" : string.Format(pid + "='{0}'", pid_val);            //根据theorder字段值排序            string orderfilter = "theorder asc";            DataRow[] rows = dt.Select(filter, orderfilter);            foreach (DataRow row in rows)            {                tn = new TreeNode();                tn.Name = row[id].ToString();                tn.Text = row[text].ToString();                tnc.Add(tn);                //递归                BindTreeView(dt, tn.Nodes, row[id].ToString(), id, pid, text);            }        }                private void StreeView_AfterSelect(object sender, TreeViewEventArgs e)        {            //选择事件            label1.Text = "Name:" + e.Node.Name + "\r\n文本" + e.Node.Text;        }    }}
总结:

这要就是看

//显示自定义图标

SetIcon(StreeView.Nodes);

这个函数内容了。

if (node.Tag == null)

{

node.ImageIndex = node.Level;

SetIcon(node.Nodes);

}

else //这里是没有带tag数据的节点,直接显示第3个图片,

{

node.ImageIndex = 2;

}

标签: #treeview获取父节点