Example #1
0
        //tương tự như Recursive_ToString_1 thay vì nối từng đoạn string về một node khi kết thúc hàm vào biến nodesString, thì Recursive_ToString_2 return đoạn string của node đó mỗi khi kết thúc hàm
        //so về tốc độ thì Recursive_ToString_2 chậm hơn Recursive_ToString_1 nhưng linh hoạt hơn nên nó được để public
        public static string Recursive_ToString_2(TreeNode node)
        {
            string returnString = "";

            n++;
            WindowsForm.Loading.Update(n + " - " + node.Text, 1);
            //  "name \bcontent \ccolor \ddate \iis_lockNode \nnodes \e"
            //lưu ý: đối với các thành phần có thể chứa ký tự "\" thì phải replace \ sang \\. Ví dụ như: name, content,...

            //mã hoá nội dung với node đang ở trạng thái mở
            string content = node.Name;

            if (((Tag_of_Node)node.Tag).is_lockNode && ((Tag_of_Node)node.Tag).unlocked)
            {
                content = Encoding.Default.GetString(AdvancedEncryptionStandard.Encoding(checkingCode + node.Name, ((Tag_of_Node)node.Tag).password));
            }
            //nối chuỗi các thuộc tính của node
            returnString += node.Text.Replace(@"\", @"\\") + @" \b"
                            + content.Replace(@"\", @"\\") + @" \c"
                            + node.ForeColor.ToArgb() + @" \d"
                            + ((Tag_of_Node)node.Tag).date + @" \i"
                            + ((Tag_of_Node)node.Tag).is_lockNode.ToString() + @" \n";
            //nếu không phải là một node bình thường
            if (((Tag_of_Node)node.Tag).is_lockNode)
            {
                //nếu node này đang khoá
                if (!((Tag_of_Node)node.Tag).unlocked)
                {
                    return(returnString + ((Tag_of_Node)node.Tag).nodes.Replace(@"\", @"\\") + @" \e");
                }
                //nếu node này đang mở
                else
                {
                    string lockNodesString = "";
                    if (node.Nodes != null && node.Nodes.Count > 0)
                    {
                        foreach (TreeNode a_node in node.Nodes)
                        {
                            lockNodesString += Recursive_ToString_2(a_node);
                        }
                    }
                    byte[] bytes = ((Tag_of_Node)node.Tag).password;
                    return(returnString + Encoding.Default.GetString(AdvancedEncryptionStandard.Encoding(lockNodesString, bytes)).Replace(@"\", @"\\") + @" \e");
                }
            }
            //nếu là một node bình thường
            else
            {
                if (node.Nodes != null && node.Nodes.Count > 0)
                {
                    foreach (TreeNode a_node in node.Nodes)
                    {
                        returnString += Recursive_ToString_2(a_node);
                    }
                }
                return(returnString + @" \e");
            }
        }
Example #2
0
        //khoá node đang mở
        public static void SaveAndLockAUnlockedNode(TreeNode node)
        {
            //mã hoá nội dung
            node.Name = Encoding.Default.GetString(AdvancedEncryptionStandard.Encoding(checkingCode + node.Name, ((Tag_of_Node)node.Tag).password));
            //đưa các nodes con về chuỗi để mã hoá
            string nodesString = "";

            foreach (TreeNode a_node in node.Nodes)
            {
                nodesString += Recursive_ToString_2(a_node);
            }
            node.Nodes.Clear();
            //mã hoá các nodes con
            ((Tag_of_Node)node.Tag).nodes    = Encoding.Default.GetString(AdvancedEncryptionStandard.Encoding(nodesString, ((Tag_of_Node)node.Tag).password));
            ((Tag_of_Node)node.Tag).password = null;
            ((Tag_of_Node)node.Tag).unlocked = false;
        }