TreeView目录树的一些操作

实现点击目录树全部展开与全部折叠的目的,假如没展开则点击一下全部展开,假如已经展开则全部折叠.

if (e.Node.IsExpanded) e.Node.Collapse(); else e.Node.ExpandAll();/*判断是否展开,全部展开或折叠*/

e.Node.Toggle();/*默认提供的只能逐级展开或折叠*/

if (e.Node.IsExpanded && e.Node.Level == 0) e.Node.Collapse(); else e.Node.ExpandAll();
/*实现只有点击第一节点才全部展开,点击子节点则不展开也不折叠.*/

if (e.Node.IsExpanded && e.Node.Level == 0 && e.Node.Checked == false)
    e.Node.Collapse(); else e.Node.ExpandAll();/*假如已勾选则无折叠*/

if (e.Node.Level == 0 && e.Node.Checked == false)
    e.Node.Collapse(); else e.Node.ExpandAll();/*当勾选时展开,且点击子节点不动作*/

点击一次就勾选取反

e.Node.Checked = !e.Node.Checked;

设置勾选状态,子节点只有一个可以勾选,并勾选第一节点

            /*设置勾选状态,子节点只有一个可以勾选,并勾选第一节点*/
            TreeNode 节点 = e.Node, 下节 = 节点.FirstNode;
            while (节点 != null || 下节 != null)
            {
                if (节点 != null) 节点 = 节点.Parent;
                if (节点 != null)
                { 
                    节点.Checked = false; 
                    if (节点.Level == 0)
                        节点.Checked = e.Node.Checked;
                }
                if (下节 != null) 
                { 
                    下节.Checked = false; 
                    下节 = 下节.FirstNode;
                }
            }

遍历树的所有节点及子节

         /*遍历树的所有节点前5节及子节,获取每节所勾选,组成每节‘与’逻辑,所对应的配药3节或逻辑,
          *或各5节的每节‘与’逻辑和各5节的‘或’逻辑,假如5节当中未选药性则以平性代;
          *功能上分为自动配药与选定配药。*/

            string 关键 = "肝,心,脾,肺,肾,中药名,性味归经,功效与作用,临床应用,药理研究,配伍药方"
                , 询 = "";
            foreach (TreeNode 树节 in 分类树.Nodes)
            {
                if (树节.Index >= 5) break;
                if (树节.Checked) 询 += 树节.Text[0] + "-";
                TreeNode 下节 = 树节.FirstNode;
                while (下节 != null)
                {
                        if (下节.Checked) 询 += 下节.Text + "-";
                        下节 = 下节.FirstNode;
                }
                询 += ";";
            }

获取选中树节的第一节字符

            Func<string> 查选中树节 = (/*获取选中树节的第一节字符,含子节选中*/) =>
            {
                string 字符 = "";
                foreach (TreeNode 树节 in 分类树.Nodes)
                {
                    if (树节.Index >= 5) break;
                    TreeNode 下节 = 树节;
                    while (下节 != null)
                    {
                        if (下节.IsSelected) 字符 = 树节.Text[0].ToString();
                        下节 = 下节.FirstNode;
                    }
                }
                return 字符;
            };

获取选中树节的第一节字符,含子节选中;同时获取勾选的节点内容

            foreach (TreeNode 树节 in 分类树.Nodes)
            {/*获取选中树节的第一节字符,含子节选中;同时获取勾选的节点内容,合成查询语句。*/
                if (树节.Index >= 5) break;
                TreeNode 下节 = 树节;
                while (下节 != null)
                {
                    if (下节.IsSelected) 自动 = 树节.Text[0] + 下节.Text;
                    if (下节.Checked && 下节.Level > 0)
                        自定 += "( " + 关键.Split(',')[6] + " Like '%" + 树节.Text[0] + "%' And "
                            + 关键.Split(',')[(多字符包含(下节.Text, 字符串转数组("平温凉热寒")) ? 6 : 7)]
                            + " Like '%" + 下节.Text + "%' ) Or ";
                    下节 = 下节.FirstNode;
                }
            }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值