程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 很久沒寫了,寫點;TreeView的聯動復選框

很久沒寫了,寫點;TreeView的聯動復選框

編輯:.NET實例教程

private void tvSysFunctionMenu_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        ...{
            if (e.Node != tvSysFunctionMenu.Nodes[0])
            ...{
                SetChildNodeChecked(e.Node);
                SetParentNodeChecked(e.Node);
            }
            else
            ...{
                SetChildNodeChecked(e.Node);
            }
        }


        //根據父節點狀態設置子節點的狀態
        private void SetChildNodeChecked(TreeNode parentNode)
        ...{
            foreach (TreeNode node in parentNode.Nodes)
            ...{
                node.Checked = parentNode.Checked;
                if (node.Nodes.Count > 0)
                ...{
                    SetChildNodeChecked(node);
                }
            }
        }

        //根據子節點狀態設置父節點的狀態
        private void SetParentNodeChecked(TreeNode childNode)
        ...{
            TreeNode parentNode = childNode.Parent;
            if (!parentNode.Checked && childNode.Checked) //當子結點選中,父結點沒選中時,則:選中父結點
            ...{
                parentNode.Checked = true;
            }
            else if (parentNode.Checked && !childNode.Checked) //取消選中其下全部子結點時,其父結點也取消
            ...{
                int checks = 0; //統計子結點的個數(為0時表示取消了其下全部子結點)
                foreach (TreeNode node in parentNode.Nodes)
                ...{
                    if (node.Checked)
                    ...{
                        checks++;
                        break;
                    }
                }
                if (checks == 0) //子結點都取消選中時,其父結點也取消
                ...{
                    parentNode.Checked = false;
                    if (!parentNode.Index.Equals(0))
                    ...{
                        SetParentNodeChecked(parentNode);
                    }
                }
            }
        }

        //節點選中狀態更改
        protected void TreeNodeCheckStatusChanged(object sender, TreeNodeMouseClickEventArgs e)
        ...{
            SetChildNodeChecked(e.Node);
            // 判斷是否是根節點
            if (!e.Node.Index.Equals(0))
            ...{
                SetParentNodeChecked(e.Node);
            }
        } 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved