技术改变人生!

winform 树行结构加载数据方法

上一篇 / 下一篇  2014-07-11 16:11:22 / 个人分类:构建工具

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AutoTesting.DomainModel;
using AutoTesting.Models.TestCaseManageEntity;
namespace AutoTesting.ControlLibrary
{
    public partial class SwitchFolder : Form
    {
        private List<TreeNode> selectedNodes = new List<TreeNode>();
        public SwitchFolder()
        {
            InitializeComponent();
            Init();
        }
        private void Init()
        {
            FolderDomain domain = new FolderDomain();
            string Type = "'F', 'K'";
            List<FolderStructure> folderNodeSource = domain.GetFolderNodeByTypes(Type);
            List<StepImporting> steps = domain.GetKeywordsAndTestCase();
            if (folderNodeSource == null || folderNodeSource.Count == 0)
            {
                return;
            }
            IEnumerable<FolderStructure> folderSource = folderNodeSource.Where(item => item.Type == "F");
            treeView1.Nodes.Clear();
            BindTreeTests(folderSource, steps.Where(item => item.Type == "F"), "Tests", "F");
        }
        private void BindTreeTests(IEnumerable<FolderStructure> source, IEnumerable<StepImporting> steps, string text, string tag)
        {
            TreeNode root = new TreeNode();
            root.Text = text;
            root.Tag = tag;
            AddSecondChildNodes(source, steps, root, -1);
            treeView1.Nodes.Add(root);
            root.Expand();
        }
        private void AddSecondChildNodes(IEnumerable<FolderStructure> source, IEnumerable<StepImporting> steps, TreeNode node, object Pid)
        {
            TreeNode _node;
            var _roots = source.Where(item => item.ParentID == int.Parse(Pid.ToString()));
            foreach (FolderStructure item in _roots)
            {
                _node = new TreeNode();
                _node.Text = item.Name;
                _node.Tag = item.ID;
                AddSecondChildNodes(source, steps, _node, _node.Tag);
             //   AddThirdChildNodes(steps, item.ID, _node);
                node.Nodes.Add(_node);
            }
        }
        private void AddThirdChildNodes(IEnumerable<StepImporting> steps, int functionID, TreeNode node)
        {
            IEnumerable<StepImporting> stepList = steps.Where(item => item.FunctionID == functionID);
            TreeNode _node;
            foreach (StepImporting item in stepList)
            {
                _node = new TreeNode();
                _node.Text = "(" + item.ID.ToString() + ") " + item.Name;
                _node.Tag = item.ID;
                node.Nodes.Add(_node);
            }
        }
        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
            this.Close();
        }
        private void treeFunction_NodeMouseClick(object sender, System.Windows.Forms.TreeNodeMouseClickEventArgs e)
        {
            if (selectedNodes != null)
            {
                foreach (TreeNode item in selectedNodes)
                {
                    item.BackColor = Color.Transparent;
                    item.ForeColor = Color.Black;
                }
            }
            this.Cursor = Cursors.WaitCursor;
            CheckChildNodes(e.Node, e.Node.Checked);
            if (e.Node.Checked)
            {
                CheckParentNode(e.Node);
            }
            else
            {
                UncheckParentNode(e.Node);
            }
            this.Cursor = Cursors.Default;
        }
        /// <summary>
        /// 勾选子节点
        /// </summary>
        /// <param name="node"></param>
        /// <param name="isChecked"></param>
        private void CheckChildNodes(TreeNode node, bool isChecked)
        {
            node.Checked = isChecked;
            if (node.Nodes.Count > 0)
            {
                foreach (TreeNode item in node.Nodes)
                {
                    CheckChildNodes(item, isChecked);
                }
            }
        }
        /// <summary>
        /// 勾选父节点
        /// </summary>
        /// <param name="node"></param>
        private void CheckParentNode(TreeNode node)
        {
            if (node.Parent != null)
            {
                node.Parent.Checked = true;
                CheckParentNode(node.Parent);
            }
        }
        /// <summary>
        /// 取消父节点勾选
        /// </summary>
        /// <param name="node"></param>
        private void UncheckParentNode(TreeNode node)
        {
            if (node.Parent != null)
            {
                if (CheckChildNodesStatus(node.Parent))
                {
                    node.Parent.Checked = false;
                    UncheckParentNode(node.Parent);
                }
            }
        }
        /// <summary>
        /// 获取子节点状态
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        private bool CheckChildNodesStatus(TreeNode node)
        {
            foreach (TreeNode item in node.Nodes)
            {
                if (item.Checked == true)
                {
                    return false;
                }
            }
            return true;
        }
    }
}

TAG:

 

评分:0

我来说两句

Open Toolbar