• DEV_TreeList使用经验小结


    1. 点击叶子节点是希望Open键显示,点击非叶子节点时希望隐藏。实践中发现点击到了非叶子节点图标,Open没有隐藏,如何解决?

    增加一个判断:

               if (_hitInfo.HitInfoType != HitInfoType.Cell&&_hitInfo.HitInfoType!=HitInfoType.SelectImage)
                {
                    return;
                }

    紫色代码用来判断当前鼠标点击点是否是节点所在的单元格;

    红色代码用来判断当前鼠标点击点是否是节点的图标;

    这样的话不论是点击单元格还是点击图标都能被捕捉到,只要点击了其中之一,Open键就会被隐藏(或者被显示)。

    2. 右键删除节点时,如果其祖先节点都只有一个孩子,也就是相当于数据库中只有一条数据,此时删除了节点,则该节点的所有祖先节点也应该被删除;如果某一级的祖先节点由多于一个子节点,则该祖先节点和被删除节点之间的所有节点应该删除。(好绕口,不知道我需求的人估计看不明白,可是没时间详细解释了,有什么疑问请留言吧,具体情况具体沟通),如何解决?

          public void HasChildNode()
            {
                treeList1.DeleteNode(treeList1.FocusedNode);
                while (!treeList1.FocusedNode.HasChildren && !Equals(treeList1.FocusedNode.GetValue(columnID: 0), "本地数据库"))//当删到“本地数据库”的时候就不再删除了
                {
                    treeList1.DeleteNode(treeList1.FocusedNode);
                }
                //删除节点后,当前焦点必定不是叶子结点,所以使open间隐藏
                lciBtnOpen.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            }

    写了一个方法来判断。首先删除节点后,数据库中的节点数据已经删除。(我的所有节点数据都是在一张表中)接下来在刷新treelist 的情况下,删除节点用treelist 的 deletednode方法。删除当前节点后,treelist 的focusedNode 会自动转到删除节点的父节点上(或相邻兄弟节点),此时判断一些当前的节点是否有子节点,如果没有,就把当前节点也删除。

  • 相关阅读:
    hdu 4332 Constructing Chimney 夜
    poj 2449 Remmarguts' Date 夜
    poj 2728 Desert King 夜
    poj 1639 Picnic Planning 夜
    poj 1125 Stockbroker Grapevine 夜
    poj 3621 Sightseeing Cows 夜
    hdu 4333 Revolving Digits 夜
    hdu 4345 Permutation 夜
    hdu 1874 通畅工程续 夜
    es6(二)
  • 原文地址:https://www.cnblogs.com/Alex1994/p/9889551.html
Copyright © 2020-2023  润新知