• c# treeView 取消选择事件


    需求:选择树的节点时,会触发某些事件。但是部分节点的处理比较特殊,不能选择。另外,前台选择的节点尽量不要跳来跳去。

    几个知识点:

    treeView.BeforeSelect事件,可以取消选择。

    TreeViewCancelEventArgs e,e包含有属性Action、Node、Cancel。可以根据Action来判断BeforeSelect事件是由什么操作触发的。同样,Node获取当前的节点,通过Node的属性值也可以判断是否继续往下执行。属性Cancel为true时,不会继续往下执行。(注:至少不会出发AfterSelect事件)

    e.Action,是一个枚举。有五个值:Collapse、Expand、Unknown、ByKeyboard、ByMouse。稍微理解一下,可以知道Collapse是折叠节点时的状态,Expand对应展开节点操作,ByKeyboard对应键盘选择操作,ByMouse对应鼠标选择操作,至于Unknown,不全是但包含treeView.SelectedNode = tn;对TreeView的SelectedNode属性赋值时的状态。

    应用实例:当节点展开、折叠,以及节点为第一级的节点(也就是没有父节点)的情况下,取消选择事件;而对SelectedNode赋值的情况,不取消事件,但是也不执行BeforeSelect事件中的其他代码。

    代码如下:

    //切换节点
    void treeAll_BeforeSelect(object sender, TreeViewCancelEventArgs e)
    {
        var tn = e.Node;
        //一层节点,展开,收缩等操作都不响应。
        if (tn.Parent == null
            || e.Action == TreeViewAction.Collapse
            || e.Action == TreeViewAction.Expand)
        {
            e.Cancel = true;
            return;
        }
    
        //未知操作执行选择,但不执行下面的act
        if (e.Action == TreeViewAction.Unknown)
            return;
    
        Action act = () =>
        {
            //DoSomething
        };
    
        if (true) act();
    }

    转载请注明出处:http://www.cnblogs.com/icyJ/

  • 相关阅读:
    Hrbust-1492 盒子(二分图最大匹配)
    数据结构——二叉树的建立和遍历(递归建树&层序遍历建树)
    HDU 1710 二叉树遍历
    HDU 2891
    HDU 2895 贪心 还是 大水题
    POJ 2896 另解暴力
    POJ 2896 AC自动机 or 暴力
    HDU 1714 math
    POJ 1328 贪心
    POJ 2109 巧妙解法
  • 原文地址:https://www.cnblogs.com/icyJ/p/beforeselect.html
Copyright © 2020-2023  润新知