/// <summary> /// Set Tree Node CheckBox State /// </summary> /// <param name="treeNode">node</param> /// <param name="checkboxChecked">CheckBox State</param> /// <returns>New CheckBox State</returns> public CkBoxState SetTreeNodeCheckBoxChecked(TreeNode treeNode, bool checkboxChecked) { CkBoxState checkboxState = GetTreeNodeCheckBoxState(treeNode); bool done = false; switch (checkboxState) { case CkBoxState.Unchecked: if (checkboxChecked) { done = true; } break; case CkBoxState.Checked: case CkBoxState.Indeterminate: if (!checkboxChecked) { done = true; } break; } if (done) { ToggleTreeNodeState(treeNode); } return(GetTreeNodeCheckBoxState(treeNode)); }
/// <summary> /// 设置树节点和他的子checkbox的状态递归 /// </summary> /// <param name="treeNode">tree node</param> /// <param name="checkboxState">checkbox state</param> private void SetTreeNodeAndChildrenStateRecursively(TreeNode treeNode, CkBoxState checkboxState) { if ((treeNode != null)) { SetTreeNodeState(treeNode, checkboxState); foreach (TreeNode objChildTreeNode in treeNode.Nodes) { SetTreeNodeAndChildrenStateRecursively(objChildTreeNode, checkboxState); } } }
/// <summary> /// 设置TreeNode的复选框状态 /// </summary> /// <param name="treeNode">treenode</param> /// <param name="state">checkbox state</param> protected void SetNodeState(TreeNode treeNode, CkBoxState state) { if (!_NodeStateDict.ContainsKey(treeNode)) { _NodeStateDict.Add(treeNode, state); } else { _NodeStateDict[treeNode] = state; } OnCheckBoxStateChanged(new CheckBoxStateChangedEventArgs(state, treeNode)); }
/// <summary> /// Add TreeNode /// </summary> /// <param name="nodes">node collection</param> /// <param name="treeNode">TreeNode</param> /// <param name="iImageIndex">image index</param> /// <param name="checkboxState">check box state</param> /// <returns></returns> protected TreeNode AddTreeNode(TreeNodeCollection nodes, TreeNode treeNode, CkBoxState checkboxState) { if (!nodes.Contains(treeNode)) { nodes.Add(treeNode); } this.SetTreeNodeState(treeNode, checkboxState); SetTreeNodeAndChildrenStateRecursively(treeNode, checkboxState); SetParentTreeNodeStateRecursively(treeNode.Parent); return(treeNode); }
/// <summary> /// 设置树节点复选框状态 /// </summary> /// <param name="treeNode">tree node</param> /// <param name="checkboxState">checkbox state</param> private void SetTreeNodeState(TreeNode treeNode, CkBoxState checkboxState) { IntPtr hWnd; TVITEM tvi; hWnd = this.Handle; // Send a TVM_SETIMAGELIST with TVSIL_STATE. if (!_ImageListSent) { SendMessage(hWnd, (UInt32)TVM_SETIMAGELIST, (UInt32)TVSIL_STATE, (UInt32)CheckBoxStateImageList.Handle); _ImageListSent = true; } // The following uses the TVM_SETITEM message to set the State // of a given item. It uses the TVITEM structure. // tvi.mask: include TVIF_HANDLE and TVIF_STATE tvi.mask = TVIF_HANDLE | TVIF_STATE; // To use the State image, tvi.State cannot be 0. //Setting it to 1 means to use the second image in the image list. tvi.state = (uint)checkboxState; // Left shift 12 to put info in bits 12 to 15 tvi.state = tvi.state << 12; // Set StateMask. -This is required to isolate State above. tvi.stateMask = TVIS_STATEIMAGEMASK; // Define the item we want to set the State in. tvi.hItem = treeNode.Handle; //For example, try the root. // Initialize the rest to zero. tvi.pszText = (IntPtr)0; tvi.cchTextMax = 0; tvi.iImage = 0; tvi.iSelectedImage = 0; tvi.cChildren = 0; tvi.lParam = (IntPtr)0; // Send the TVM_SETITEM message. // TVM_SETITEM = 4365 SendMessage(hWnd, (UInt32)TVM_SETITEM, (UInt32)0, ref tvi); //Set Node State SetNodeState(treeNode, checkboxState); }
/// <summary> /// 状态切换的TreeNode /// </summary> /// <param name="treeNode">tree node</param> protected void ToggleTreeNodeState(TreeNode treeNode) { CkBoxState checkboxState = GetTreeNodeCheckBoxState(treeNode); this.BeginUpdate(); switch (checkboxState) { case CkBoxState.Unchecked: SetTreeNodeAndChildrenStateRecursively(treeNode, CkBoxState.Checked); SetParentTreeNodeStateRecursively(treeNode.Parent); break; case CkBoxState.Checked: case CkBoxState.Indeterminate: SetTreeNodeAndChildrenStateRecursively(treeNode, CkBoxState.Unchecked); SetParentTreeNodeStateRecursively(treeNode.Parent); break; } this.EndUpdate(); }
public CheckBoxStateChangedEventArgs(CkBoxState state, TreeNode node) { _State = state; _Node = node; }
public TreeNode AddTreeNode(TreeNodeCollection nodes, string key, string text, string imageKey, string selectedImageKey, bool checkboxChecked) { CkBoxState checkboxState = checkboxChecked ? CkBoxState.Checked : CkBoxState.Unchecked; return(AddTreeNode(nodes, key, text, imageKey, selectedImageKey, checkboxState)); }
public TreeNode AddTreeNode(TreeNodeCollection nodes, TreeNode node, bool checkboxChecked) { CkBoxState checkboxState = checkboxChecked ? CkBoxState.Checked : CkBoxState.Unchecked; return(AddTreeNode(nodes, node, checkboxState)); }
protected TreeNode AddTreeNode(TreeNodeCollection nodes, string key, string text, string imageKey, string selectedImageKey, CkBoxState checkboxState) { TreeNode treeNode = nodes.Add(key, text, imageKey, selectedImageKey); this.SetTreeNodeState(treeNode, checkboxState); SetTreeNodeAndChildrenStateRecursively(treeNode, checkboxState); SetParentTreeNodeStateRecursively(treeNode.Parent); return(treeNode); }
/// <summary> /// Add TreeNode /// </summary> /// <param name="nodes">node collection</param> /// <param name="text">text</param> /// <param name="iImageIndex">image index</param> /// <param name="checkboxState">check box state</param> /// <returns></returns> protected TreeNode AddTreeNode(TreeNodeCollection nodes, string text, CkBoxState checkboxState) { TreeNode treeNode = nodes.Add(text); return(AddTreeNode(nodes, treeNode, checkboxState)); }