123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- using OTSCommon.DBOperate.Model;
- using OTSIncAReportApp.OTSSampleReportInfo;
- //using OTSINTERFACE;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Windows.Forms;
- namespace OTSIncAReportApp.OTSRstMgrFunction
- {
- /// <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<ResultFile> ResultFileList)
- {
- 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].anotherFileName;
- TreeNode node = new TreeNode();
- node.Text = SampleName;
- node.Tag = ResultFileList[i].FilePath.ToString();
- 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.treeView1.SelectedNode.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
- }
- }
|