| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 | using OTSIncAReportApp.OTSSampleReportInfo;//using OTSINTERFACE;using System.Collections.Generic;using System.Drawing;using System.Windows.Forms;namespace OTSIncAReportApp.OTSDataMgrFunction{    /// <summary>    /// 树控件操作类    /// </summary>    public class OTSTreeViewData    {        #region 变量定义        /// <summary>        /// 测量结果主窗口对象        /// </summary>        frmMeasureRstMgr m_RstWindow = null;        /// <summary>        /// 控制插入测量结果标识,全局变量        /// </summary>        bool m_bSetFlag = false;        /// <summary>        /// 切换测量结果是否成功的标志        /// </summary>        bool m_bSwichFlag = false;        #endregion        #region 构造函数及初始化        /// <summary>        /// 构造函数        /// </summary>        /// <param name="ReportTreeApp"></param>        public OTSTreeViewData(frmMeasureRstMgr RstWindow)        {            //主窗口数据源            m_RstWindow = RstWindow;        }        #endregion        #region 树控件操作相关函数        /// <summary>        /// 在树控件上显示相关测量结果        /// </summary>        /// <param name="m_ProjDataMgr"></param>        /// <param name="TSampleParam"></param>        public void DisplayWorkSampleTree(List<DataOperation.Model.ResultFile> ResultFileList, CTreeSampleParam TSampleParam)        {            if (ResultFileList != null && ResultFileList.Count > 0)            {                m_RstWindow.treeView1.Nodes.Clear();     //清除Treeview所有节点                    if (ResultFileList.Count > 0)                {                    for (int i = 0; i < ResultFileList.Count; i++)                    {                        //从底层获取到测量结果的名称                        string SampleName = ResultFileList[i].FileName;                        TreeNode node = new TreeNode();                        node.Text = SampleName;                        //将获取到的测量结果名称,添加到树控件上                        m_RstWindow.treeView1.Nodes.Add(node);                        node.NodeFont = new Font("宋体", 10, FontStyle.Regular);                    }                }            }            else            {                #region    右键添加结果文件显示树                if (0 == m_RstWindow.treeView1.Nodes.Count)                {                    TreeNode node = new TreeNode();                    node.Text = "";                    m_RstWindow.treeView1.Nodes.Add(node);                    node.NodeFont = new Font("宋体", 10, FontStyle.Regular);                    //设置工作样品的CheckBox 值                    node.Checked = false;                    m_RstWindow.treeView1.SelectedNode = node;                    m_RstWindow.treeView1.Focus();                    m_RstWindow.m_WorkSampleNode = node;                }                else                {                    for (int iTNodeCount = 0; iTNodeCount < m_RstWindow.treeView1.Nodes.Count; iTNodeCount++)                    {                        m_bSetFlag = false;                        InsertNewSampleNode(m_RstWindow.treeView1.Nodes[iTNodeCount]);                    }                }                #endregion            }            //根据样品属性数据中的SWITCH状态来设定Treeview的checkbox状态 和工作样品焦点            m_RstWindow.treeView1.ExpandAll();    //展开Treeview 树形节点            m_RstWindow.treeView1.Refresh();            m_RstWindow.treeView1.Scrollable = true;            m_RstWindow.Refresh();//刷新一下,防止在加载功能模块时界面卡住树控件会显示出根节点        }        /// <summary>        /// 插入测量结果        /// </summary>        /// <param name="node"></param>        private void InsertNewSampleNode(TreeNode node)        {            if (m_bSetFlag)            {                return;            }            if (null != node.Parent)            {                TreeNode NewNode = new TreeNode();                node.Parent.Nodes.Add(NewNode);                if (m_RstWindow.m_WorkSampleParam.bSwitch)                {                    node.Parent.LastNode.Checked = true;                }                else                {                    node.Parent.LastNode.Checked = false;                }                node.Parent.LastNode.NodeFont = new Font("宋体", 10, FontStyle.Regular);                m_RstWindow.treeView1.SelectedNode = NewNode;                m_RstWindow.treeView1.Focus();                m_bSetFlag = true;                m_RstWindow.m_WorkSampleNode = NewNode;                return;            }            if (node.Nodes.Count != 0)            {                for (int i = 0; i < node.Nodes.Count; i++)                {                    InsertNewSampleNode(node.Nodes[i]);                }            }        }        /// <summary>        /// 切换测量结果状态        /// </summary>        /// <param name="sNewWSampleName"></param>        public void SetNewWorkSample(string sNewWSampleName)        {            for (int iTNodeCount = 0; iTNodeCount < m_RstWindow.treeView1.Nodes.Count; iTNodeCount++)            {                m_bSwichFlag = false;                GetTreeNextNode(m_RstWindow.treeView1.Nodes[iTNodeCount], sNewWSampleName);            }        }        /// <summary>        /// 根据工作样品名称查找TREEVIEW 中工作样品节点        /// </summary>        /// <param name="sWorkSampleName"></param>        public void GetTreeWorkSampleNode(string sWorkSampleName)        {            for (int iTNodeCount = 0; iTNodeCount < m_RstWindow.treeView1.Nodes.Count; iTNodeCount++)            {                //改变选中的树节点状态                FindTreeWorkSampleNode(m_RstWindow.treeView1.Nodes[iTNodeCount], sWorkSampleName);            }        }        /// <summary>        /// 重新设置TREEVIEW的工作样品焦点        /// </summary>        public void ReSetWorkSampleFoucs()        {            if (0 == this.m_RstWindow.treeView1.Nodes.Count)            {                return;            }            for (int i = 0; i < this.m_RstWindow.treeView1.Nodes.Count; i++)            {                SetTreeNodeFocus_ByWorkingIndex(m_RstWindow.treeView1.Nodes[i]);            }            m_RstWindow.treeView1.Refresh();        }        #endregion        #region 遍历树控件相关方法        /// <summary>        /// 遍历树节点,根据底层数据判断,是否对该节点进行选中操作        /// </summary>        /// <param name="node"></param>        /// <param name="sNewWSampleName"></param>        private void GetTreeNextNode(TreeNode node, string sNewWSampleName)        {            if (m_bSwichFlag)   //已经切换成功            {                return;            }            if (sNewWSampleName == node.Text)            {                m_RstWindow.treeView1.SelectedNode = node;                m_RstWindow.treeView1.Focus();                m_RstWindow.m_WorkSampleNode = node;                m_bSwichFlag = true;            }            if (node.Nodes.Count != 0)            {                for (int i = 0; i < node.Nodes.Count; i++)                {                    //遍历下一个树的节点                    GetTreeNextNode(node.Nodes[i], sNewWSampleName);                }            }        }        /// <summary>        /// 递归调用,查找树节点,找到为后该节点设置为选择节点,并设置焦点        /// </summary>        /// <param name="Tnode"></param>        /// <param name="sWorkSampleName"></param>        private void FindTreeWorkSampleNode(TreeNode Tnode, string sWorkSampleName)        {            if (Tnode.Text == sWorkSampleName)            {                m_RstWindow.m_WorkSampleNode = Tnode;                m_RstWindow.treeView1.SelectedNode = Tnode;                m_RstWindow.treeView1.Focus();                return;            }            if (Tnode.Nodes.Count != 0)            {                for (int i = 0; i < Tnode.Nodes.Count; i++)                {                    FindTreeWorkSampleNode(Tnode.Nodes[i], sWorkSampleName);                }            }    }        /// <summary>        /// 递归遍历树节点,找到后,设置树节点的选中状态        /// </summary>        /// <param name="node"></param>        private void SetTreeNodeFocus_ByWorkingIndex(TreeNode node)        {            if (node.Text == m_RstWindow.m_WorkSampleNode.Text)            {                m_RstWindow.treeView1.SelectedNode = m_RstWindow.m_WorkSampleNode;                m_RstWindow.treeView1.Focus();                m_RstWindow.treeView1.Refresh();            }            if (node.Nodes.Count != 0)            {                for (int i = 0; i < node.Nodes.Count; i++)                {                    SetTreeNodeFocus_ByWorkingIndex(node.Nodes[i]);                }            }        }        #endregion    }}
 |