【问题标题】:Winform:TreeView Node Collapse without Node Click event firingWinform:TreeView 节点折叠而不触发节点单击事件
【发布时间】:2014-11-02 16:26:03
【问题描述】:

我需要防止节点折叠时发生单击事件。我仍然希望节点折叠并隐藏它下面的所有子节点,但我不希望触发 click 事件或尽可能选择节点。

【问题讨论】:

    标签: c# winforms click treeview collapse


    【解决方案1】:

    如果你只需要影响你自己的代码,你可以使用这样的标志:

    bool suppressClick = false;
    
    private void treeView1_Click(object sender, EventArgs e)
    {
        if (suppressClick) return;
        // else your regular code..
    }
    
    private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        if (e.Node.IsExpanded)
             { suppressClick = false; }
        else { suppressClick = true; }
    }
    

    要获得更多控制权,您可能需要访问 Windows 消息队列..

    【讨论】:

      【解决方案2】:

      我尝试使用前一种解决方案,但它只能以一种方式工作。我实现了一个字典,在其中保持节点展开/折叠状态,所以当我发现状态相同时,它是实际的节点单击,而不是折叠/展开行为。

      public class Yourclass {  
      
             var nodeStates = new Dictionary<int, bool>();
      
               public void addNode(Yourentity entity) 
               {
                    TreeNode node= new TreeNode(entity.Name);
                    node.Tag = entity;
                    tree.Nodes.Add(entity);
                    nodeStates.Add(entity.Id, true /* expanded in this case but doesn't matter */);
               }
      
             private void TreeControl_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
               var entity = (Yourentity )e.Node.Tag;
               bool state = nodeStates[entity.Id];
      
               // If was expanded or collapsed values will be different
               if (e.Node.Nodes.Count > 0 && (e.Node.IsExpanded != state))
               {
                  // We update the state
                   nodeStates[entity.Id] = e.Node.IsExpanded;
                   return;
               }
      
               /* Put here your actual node click code */
           }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-07
        • 2012-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多