Browse Source

add gbcalculate code

gsp 3 years ago
parent
commit
969bada3ae

+ 758 - 0
OTSIncAReportApp/GBCalculate/ASTMStandardABCDDS.cs

@@ -0,0 +1,758 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+using System.Collections;
+
+using OTSREPORTCLR;
+using OTSSysMgrTools;
+
+namespace OTSIncAReportGB
+{
+    public partial class ASTMStandardABCDDS : UserControl
+    {
+
+        #region 全局变量
+        //设置数据表
+        public DataTable m_dt_A = new DataTable();
+        public DataTable m_dt_B = new DataTable();
+        public DataTable m_dt_C = new DataTable();
+        public DataTable m_dt_D = new DataTable();
+        public DataTable m_dt_DS = new DataTable();
+
+        //底层相关,项目操作管理类
+        COTSReportCalculateClr m_COTSReportProjFileMgrClr = null;
+
+        //日志类
+        //public NSLogFunExport.CFunExportClass m_LogFunExport = null;
+
+        //日志文件名
+        const String m_csFileName = "OTSReportAppLog";
+
+
+        //获取从框架得到的底层计算结果,国标表A
+        List<CGridDataClr> m_list_cgriddataclr_A = null;
+
+        //获取从框架得到的底层计算结果,国标表B
+        List<CGridDataClr> m_list_cgriddataclr_B = null;
+
+        //获取从框架得到的底层计算结果,国标表C
+        List<CGridDataClr> m_list_cgriddataclr_C = null;
+
+        //获取从框架得到的底层计算结果,国标表D
+        List<CGridDataClr> m_list_cgriddataclr_D = null;
+
+        //获取从框架得到的底层计算结果,国标表DS
+        List<CGridDataClr> m_list_cgriddataclr_DS = null;
+        //定义整个一组返回List
+        List<CGridDataClr> m_list_ALL = null;
+
+        //接收底层数据
+        public List<CGridDataClr> DataAll;
+        //一个数据源包含几个列数的记录数
+        private int m_oneresult_columnscount_A = 3;
+        private int m_oneresult_columnscount_B = 3;
+        private int m_oneresult_columnscount_C = 3;
+        private int m_oneresult_columnscount_D = 3;
+        private int m_oneresult_columnscount_DS = 3;
+
+        #endregion
+
+        #region 自定义方法
+
+        private void SetDataGridViewStyleAll()
+        {
+            //用户不能调整标题的高度
+            Gview_gzA.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzA.AllowUserToResizeRows = false;
+
+            //点击选择整行
+            Gview_gzA.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzA.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzA.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzA.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzA.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,B类表
+        /// </summary>
+        private void SetDataGridViewStyleB()
+        {
+            //用户不能调整标题的高度
+            Gview_gzB.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzB.AllowUserToResizeRows = false;
+
+            //点击选择整行
+            Gview_gzB.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzB.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzB.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzB.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzB.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzB.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzB.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzB.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,C类表
+        /// </summary>
+        private void SetDataGridViewStyleC()
+        {
+            //用户不能调整标题的高度
+            Gview_gzC.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzC.AllowUserToResizeRows = false;
+
+            //点击选择整行
+            Gview_gzC.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzC.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzC.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzC.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzC.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzC.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzC.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzC.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,D类表
+        /// </summary>
+        private void SetDataGridViewStyleD()
+        {
+            //用户不能调整标题的高度
+            Gview_gzD.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzD.AllowUserToResizeRows = false;
+
+            //改变行的高度;
+            //Gview_gz.RowTemplate.Height = 20;
+
+            //点击选择整行
+            Gview_gzD.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzD.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzD.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzD.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzD.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzD.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzD.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzD.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,DS类表
+        /// </summary>
+        private void SetDataGridViewStyleDS()
+        {
+            //用户不能调整标题的高度
+            Gview_gzDS.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzDS.AllowUserToResizeRows = false;
+
+            //点击选择整行
+            Gview_gzDS.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzDS.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzDS.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzDS.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzDS.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzDS.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzDS.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzDS.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+
+        #endregion
+
+        #region 窗体加载及初始化
+        public ASTMStandardABCDDS()
+        {
+            InitializeComponent();
+        }
+
+
+        /// <summary>
+        /// 国标报表,构造函数,接收A,B,C,D,DS五种结果,并进行显示
+        /// </summary>
+        /// <param name="in_sec"></param>
+        /// <param name="in_Cotsreportprojfilemgrclr"></param>
+        /// <param name="in_list_CGridDataClrAll"></param>   //all  代表A、B、C、D、DS按顺序得表
+        public string ColumnName;
+        public string RowName;
+        #region 国际化语言
+        Language lan;
+        Hashtable table;
+        #endregion
+        public ASTMStandardABCDDS(COTSReportCalculateClr in_Cotsreportprojfilemgrclr, List<CGridDataClr> in_list_CGridDataClrAll)
+        {
+
+            DataAll = in_list_CGridDataClrAll;
+
+            //获取报告项目类对象
+            m_COTSReportProjFileMgrClr = in_Cotsreportprojfilemgrclr;
+
+            m_list_cgriddataclr_A = in_list_CGridDataClrAll.GetRange(0, 1);
+            m_list_cgriddataclr_B = in_list_CGridDataClrAll.GetRange(1, 1);
+            m_list_cgriddataclr_C = in_list_CGridDataClrAll.GetRange(2, 1);
+            m_list_cgriddataclr_D = in_list_CGridDataClrAll.GetRange(3, 1);
+            m_list_cgriddataclr_DS = in_list_CGridDataClrAll.GetRange(4, 1);
+            m_list_ALL = in_list_CGridDataClrAll;
+
+
+            InitializeComponent();
+            #region 国际化语言
+            lan = new Language(this);
+            table = lan.GetNameTable(this.Name);
+            #endregion
+        }
+
+        private void ASTMStandardABCDDS_Load(object sender, EventArgs e)
+        {
+
+            //从底层结果类对象中,分解出数据保存到datatable中
+
+            if (m_list_ALL.Count > 6)
+            {
+                int SouseData = (m_COTSReportProjFileMgrClr.GetSmplMsrResultMgrs().Count) * 5;
+                for (int g = 0; g < m_COTSReportProjFileMgrClr.GetSmplMsrResultMgrs().Count; g++)
+                {
+                    for (int i = 0; i < 5; i++)
+                    {
+                        DataTable dt = new DataTable();
+                        DataColumn cc = new DataColumn();
+                        int q = g * 6 + i;
+                        dt = ChineseStandardABCD_GetDataTable_Total(DataAll.GetRange(q, 1), out m_oneresult_columnscount_A);
+                        DataGridView aa = new DataGridView();
+                        int start = 40;
+                        int end = 0;
+                        end = 150 * q;
+                        aa.Location = new Point(start, end);
+                        aa.Width = panel1.Width;
+                        aa.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+                        aa.BackgroundColor = Color.White;
+                        panel1.Controls.Add(aa);
+                        aa.DataSource = dt;
+                        aa.Name = i.ToString();
+
+                        Label bb = new Label();
+                        int startLabel = 0;
+                        int endLabel = 0;
+                        endLabel = 150 * q;
+                        bb.Location = new Point(startLabel, endLabel);
+                        bb.Width = 75;
+                        for (int t = 0; t < SouseData; t++)
+                        {
+                            if (i == t * 5)
+                            {
+                                bb.Text = table["label1"].ToString();
+                                break;
+                            }
+                            if (i == t * 5 + 1)
+                            {
+                                bb.Text = table["label2"].ToString();
+                            }
+                            if (i == t * 5 + 2)
+                            {
+                                bb.Text = table["label3"].ToString();
+                            }
+                            if (i == t * 5 + 3)
+                            {
+                                bb.Text = table["label4"].ToString();
+                            }
+                            if (i == t * 5 + 4)
+                            {
+                                bb.Text = table["label5"].ToString();
+                            }
+
+                        }
+                        bb.Font = new Font(bb.Font.Name, 12, FontStyle.Bold | FontStyle.Underline);
+                        panel1.Controls.Add(bb);
+                    }
+                }
+
+
+                Gview_gzA.Visible = false;
+                Gview_gzB.Visible = false;
+                Gview_gzC.Visible = false;
+                Gview_gzD.Visible = false;
+                Gview_gzDS.Visible = false;
+                label1.Visible = false;
+                label2.Visible = false;
+                label3.Visible = false;
+                label4.Visible = false;
+                label5.Visible = false;
+                Invalidate();
+            }
+            else
+            {
+                m_dt_A = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_A, out m_oneresult_columnscount_A);
+                m_dt_B = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_B, out m_oneresult_columnscount_B);
+                m_dt_C = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_C, out m_oneresult_columnscount_C);
+                m_dt_D = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_D, out m_oneresult_columnscount_D);
+                m_dt_DS = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_DS, out m_oneresult_columnscount_DS);
+                Gview_gzA.DataSource = m_dt_A;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzA.Columns[i].Width = 68;
+                }
+                Gview_gzB.DataSource = m_dt_B;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzB.Columns[i].Width = 68;
+                }
+                Gview_gzC.DataSource = m_dt_C;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzC.Columns[i].Width = 68;
+                }
+                Gview_gzD.DataSource = m_dt_D;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzD.Columns[i].Width = 68;
+                }
+                Gview_gzDS.DataSource = m_dt_DS;
+
+                Gview_gzA.Width = panel1.Width;
+                Gview_gzB.Width = panel1.Width;
+                Gview_gzC.Width = panel1.Width;
+                Gview_gzD.Width = panel1.Width;
+                Gview_gzDS.Width = panel1.Width;
+
+            }
+
+            Invalidate();
+
+        }
+
+        #endregion
+
+        #region 相关事件
+        /// <summary>
+        /// 复制选择区域,A
+        /// </summary>
+        public void CopySelected_A()
+        {
+            //复制选择区域
+            object oo = Gview_gzA.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,B
+        /// </summary>
+        public void CopySelected_B()
+        {
+            //复制选择区域
+            object oo = Gview_gzB.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,C
+        /// </summary>
+        public void CopySelected_C()
+        {
+            //复制选择区域
+            object oo = Gview_gzC.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,D
+        /// </summary>
+        public void CopySelected_D()
+        {
+            //复制选择区域
+            object oo = Gview_gzD.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,DS
+        /// </summary>
+        public void CopySelected_DS()
+        {
+            //复制选择区域
+            object oo = Gview_gzDS.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,A
+        /// </summary>
+        public void CopyAll_A()
+        {
+            Gview_gzA.SelectAll();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,B
+        /// </summary>
+        public void CopyAll_B()
+        {
+            Gview_gzB.SelectAll();
+            Clipboard.SetDataObject(Gview_gzB.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,C
+        /// </summary>
+        public void CopyAll_C()
+        {
+            Gview_gzC.SelectAll();
+            Clipboard.SetDataObject(Gview_gzC.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,D
+        /// </summary>
+        public void CopyAll_D()
+        {
+            Gview_gzD.SelectAll();
+            Clipboard.SetDataObject(Gview_gzD.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,DS
+        /// </summary>
+        public void CopyAll_DS()
+        {
+            Gview_gzDS.SelectAll();
+            Clipboard.SetDataObject(Gview_gzDS.GetClipboardContent());
+        }
+
+
+        private void ToolStripMenuItem1_Click(object sender, EventArgs e)
+        {
+            //A,复制整个表
+            CopyAll_A();
+        }
+
+        private void ToolStripMenuItem2_Click(object sender, EventArgs e)
+        {
+            //A,复制选择区域
+            CopySelected_A();
+        }
+
+
+        private void toolStripMenuItem4_Click(object sender, EventArgs e)
+        {
+            //B,复制整个表
+            CopyAll_B();
+        }
+
+        private void toolStripMenuItem5_Click(object sender, EventArgs e)
+        {
+            //B,复制选择区域
+            CopySelected_B();
+        }
+
+
+        private void toolStripMenuItem7_Click(object sender, EventArgs e)
+        {
+            //C,复制整个表
+            CopyAll_C();
+        }
+
+        private void toolStripMenuItem8_Click(object sender, EventArgs e)
+        {
+            //C,复制选择区域
+            CopySelected_C();
+        }
+
+
+        private void toolStripMenuItem10_Click(object sender, EventArgs e)
+        {
+            //D,复制整个表
+            CopyAll_D();
+        }
+
+        private void toolStripMenuItem11_Click(object sender, EventArgs e)
+        {
+            //D,复制选择区域
+            CopySelected_D();
+        }
+
+        private void toolStripMenuItem13_Click(object sender, EventArgs e)
+        {
+            //DS,复制整个表
+            CopyAll_DS();
+        }
+
+        private void toolStripMenuItem14_Click(object sender, EventArgs e)
+        {
+            //DS,复制选择区域
+            CopySelected_DS();
+        }
+        #endregion
+
+        #region 获取向导出模块提供的DataTable和GridView对象
+        /// <summary>
+        /// 获取到该模块输出后形成的DataTable,和GridView
+        /// </summary>
+        /// <param name="out_dt"></param>
+        /// <param name="out_dg"></param>
+        public void GetDataTableAndGridView(out DataTable out_dtA, out DataTable out_dtB, out DataTable out_dtC, out DataTable out_dtD, out DataTable out_dtDS,
+            out DataGridView out_dgA, out DataGridView out_dgB, out DataGridView out_dgC, out DataGridView out_dgD, out DataGridView out_dgDS)
+        {
+            //从panel中找出前5个datagridview,然后进行输出
+            foreach (Control ctl in this.panel1.Controls)
+            {
+                if (ctl.Name == "0")
+                {
+                    this.Gview_gzA = (DataGridView)ctl;
+                }
+                if (ctl.Name == "1")
+                {
+                    this.Gview_gzB = (DataGridView)ctl;
+                }
+                if (ctl.Name == "2")
+                {
+                    this.Gview_gzC = (DataGridView)ctl;
+                }
+                if (ctl.Name == "3")
+                {
+                    this.Gview_gzD = (DataGridView)ctl;
+                }
+                if (ctl.Name == "4")
+                {
+                    this.Gview_gzDS = (DataGridView)ctl;
+                }
+            }
+
+            out_dtA = m_dt_A;
+            out_dgA = this.Gview_gzA;
+
+            out_dtB = m_dt_B;
+            out_dgB = this.Gview_gzB;
+
+            out_dtC = m_dt_C;
+            out_dgC = this.Gview_gzC;
+
+            out_dtD = m_dt_D;
+            out_dgD = this.Gview_gzD;
+
+            out_dtDS = m_dt_DS;
+            out_dgDS = this.Gview_gzDS;
+        }
+
+        #endregion
+
+
+        #region clr加载数据部分
+        public DataTable ChineseStandardABCD_GetDataTable_Total(List<CGridDataClr> in_list_cgriddataclr, out int oneresult_columncount)
+        {
+            oneresult_columncount = 1;//一个数据源的跨度,计算出一个数据源包含几个列
+            //创建一个临时表
+            DataTable ret_dt = new DataTable();
+
+            //判断传入的数据对象是否为空
+            if (in_list_cgriddataclr == null)
+            {
+                string str1 = "传入分解表格数据的CGridDataClr对象为空!";
+                str1 = table["str1"].ToString();
+                //log.Error("(OTSIncAReportGridsFun.ChineseStandardABCD_GetDataTable_Total)" + str1);
+                return ret_dt;
+            }
+
+            #region 根据返回的结构创建DataTable的结构---------------------------------------------
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+
+                //单个数据源包含几个列的跨度
+                if (oneresult_columncount < list_cgridcolumnclrs.Count())
+                    oneresult_columncount = list_cgridcolumnclrs.Count();
+
+                if (in_list_cgriddataclr.Count > 1)
+                {
+                    //创建DT的列,多个数据源,为每个字段带上索引号
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        string ls_fl_strName = ls_cgridcolumnclr.GetName();
+
+                        //通过获取到的列,创建表的列
+                        ret_dt.Columns.Add(ls_fl_strName + "(" + (i + 1).ToString() + ")");
+                    }
+                }
+                else
+                {
+                    //创建DT的列,单个数据源,不带索引号
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        string ls_fl_strName = ls_cgridcolumnclr.GetName();
+
+                        //通过获取到的列,创建表的列
+                        ret_dt.Columns.Add(ls_fl_strName);
+                    }
+                }
+            }
+            #endregion
+
+            #region 再创建表的行------------------------------------------------------------------
+            //取最大的rowlistcount,要不然,不知道这底层返回的数据居然还有2,2,3这样的行数据
+            int maxrownumber = 0;
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+
+                //创建DT的行
+                if (list_cgridcolumnclrs != null)
+                {
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        if (maxrownumber < ls_cgridcolumnclr.GetRowList().Count())
+                        {
+                            maxrownumber = ls_cgridcolumnclr.GetRowList().Count();
+                        }
+                    }
+                }
+            }
+            for (int k = 0; k < maxrownumber; k++)
+            {
+                DataRow dr = ret_dt.NewRow();
+                ret_dt.Rows.Add(dr);
+            }
+            #endregion
+
+            #region //再次重新分解,先分解列,然后将获取到的各行各列的数据,填充到相应的位置上---
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+                                                                                       //再次重新分解,先分解列,然后将获取到的
+                for (int k = 0; k < list_cgridcolumnclrs.Count(); k++)
+                {
+                    string ls_fl_strName = list_cgridcolumnclrs[k].GetName();
+                    List<CGridRowClr> ls_list_cgridrowclr = new List<CGridRowClr>();
+                    ls_list_cgridrowclr = list_cgridcolumnclrs[k].GetRowList();
+
+                    for (int j = 0; j < ls_list_cgridrowclr.Count(); j++)
+                    {
+                        //先判断该行该单元格的数据类型
+                        string str_value = "";//因为显示只需要对字符串进行操作就可以了,所以将底层获取到的数据,除了颗粒类型外的都转成string
+
+                        switch (ls_list_cgridrowclr[j].GetDataType())
+                        {
+                            case 0:
+                                //string
+                                str_value = ls_list_cgridrowclr[j].GetStringValue();
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                            case 1:
+                                //该元素含量表没有需要显示的颗粒图像
+                                //ret_dt.Rows[j][k+i*oneresult_columncount] = GetBitmapByParticleList(ls_list_cgridrowclr[k].GetParticle());
+                                break;
+                            case 2:
+                                //int
+                                str_value = ls_list_cgridrowclr[j].GetIntValue().ToString();
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                            case 3:
+                                //float
+                                str_value = ls_list_cgridrowclr[j].GetDoubleValue().ToString("0.00");
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                            default:
+                                str_value = "";
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                        }
+                    }
+                }
+            }
+            #endregion
+
+            return ret_dt;
+        }
+        #endregion
+
+    }
+}

+ 493 - 0
OTSIncAReportApp/GBCalculate/ASTMStandardABCDDS.designer.cs

@@ -0,0 +1,493 @@
+namespace OTSIncAReportGB
+{
+    partial class ASTMStandardABCDDS
+    {
+        /// <summary> 
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region 组件设计器生成的代码
+
+        /// <summary> 
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            this.Gview_gzA = new System.Windows.Forms.DataGridView();
+            this.contextMenuStrip_A = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+            this.ToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+            this.ToolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
+            this.Gview_gzB = new System.Windows.Forms.DataGridView();
+            this.contextMenuStrip_B = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripMenuItem6 = new System.Windows.Forms.ToolStripMenuItem();
+            this.Gview_gzC = new System.Windows.Forms.DataGridView();
+            this.contextMenuStrip_C = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripMenuItem();
+            this.Gview_gzD = new System.Windows.Forms.DataGridView();
+            this.contextMenuStrip_D = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripMenuItem12 = new System.Windows.Forms.ToolStripMenuItem();
+            this.Gview_gzDS = new System.Windows.Forms.DataGridView();
+            this.contextMenuStrip_DS = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.toolStripMenuItem13 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripMenuItem();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.label5 = new System.Windows.Forms.Label();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.pictureBox5 = new System.Windows.Forms.PictureBox();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzA)).BeginInit();
+            this.contextMenuStrip_A.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzB)).BeginInit();
+            this.contextMenuStrip_B.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzC)).BeginInit();
+            this.contextMenuStrip_C.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzD)).BeginInit();
+            this.contextMenuStrip_D.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzDS)).BeginInit();
+            this.contextMenuStrip_DS.SuspendLayout();
+            this.panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // Gview_gzA
+            // 
+            this.Gview_gzA.AllowUserToAddRows = false;
+            this.Gview_gzA.AllowUserToDeleteRows = false;
+            this.Gview_gzA.AllowUserToResizeRows = false;
+            this.Gview_gzA.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzA.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzA.ContextMenuStrip = this.contextMenuStrip_A;
+            this.Gview_gzA.Location = new System.Drawing.Point(80, 24);
+            this.Gview_gzA.Name = "Gview_gzA";
+            this.Gview_gzA.ReadOnly = true;
+            this.Gview_gzA.RowHeadersVisible = false;
+            this.Gview_gzA.RowHeadersWidth = 40;
+            this.Gview_gzA.RowTemplate.Height = 30;
+            this.Gview_gzA.Size = new System.Drawing.Size(1311, 206);
+            this.Gview_gzA.TabIndex = 1;
+            // 
+            // contextMenuStrip_A
+            // 
+            this.contextMenuStrip_A.ImageScalingSize = new System.Drawing.Size(24, 24);
+            this.contextMenuStrip_A.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.ToolStripMenuItem1,
+            this.ToolStripMenuItem2,
+            this.toolStripSeparator1,
+            this.ToolStripMenuItem3});
+            this.contextMenuStrip_A.Name = "contextMenuStrip1";
+            this.contextMenuStrip_A.Size = new System.Drawing.Size(207, 94);
+            // 
+            // ToolStripMenuItem1
+            // 
+            this.ToolStripMenuItem1.Name = "ToolStripMenuItem1";
+            this.ToolStripMenuItem1.Size = new System.Drawing.Size(206, 28);
+            this.ToolStripMenuItem1.Text = "复制整个表";
+            this.ToolStripMenuItem1.Click += new System.EventHandler(this.ToolStripMenuItem1_Click);
+            // 
+            // ToolStripMenuItem2
+            // 
+            this.ToolStripMenuItem2.Name = "ToolStripMenuItem2";
+            this.ToolStripMenuItem2.Size = new System.Drawing.Size(206, 28);
+            this.ToolStripMenuItem2.Text = "复制选择区域";
+            this.ToolStripMenuItem2.Click += new System.EventHandler(this.ToolStripMenuItem2_Click);
+            // 
+            // toolStripSeparator1
+            // 
+            this.toolStripSeparator1.Name = "toolStripSeparator1";
+            this.toolStripSeparator1.Size = new System.Drawing.Size(203, 6);
+            // 
+            // ToolStripMenuItem3
+            // 
+            this.ToolStripMenuItem3.Name = "ToolStripMenuItem3";
+            this.ToolStripMenuItem3.Size = new System.Drawing.Size(206, 28);
+            this.ToolStripMenuItem3.Text = "恢复至初始状态";
+            // 
+            // Gview_gzB
+            // 
+            this.Gview_gzB.AllowUserToAddRows = false;
+            this.Gview_gzB.AllowUserToDeleteRows = false;
+            this.Gview_gzB.AllowUserToResizeRows = false;
+            this.Gview_gzB.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzB.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzB.ContextMenuStrip = this.contextMenuStrip_B;
+            this.Gview_gzB.Location = new System.Drawing.Point(80, 260);
+            this.Gview_gzB.Name = "Gview_gzB";
+            this.Gview_gzB.ReadOnly = true;
+            this.Gview_gzB.RowHeadersVisible = false;
+            this.Gview_gzB.RowHeadersWidth = 40;
+            this.Gview_gzB.RowTemplate.Height = 30;
+            this.Gview_gzB.Size = new System.Drawing.Size(1311, 206);
+            this.Gview_gzB.TabIndex = 2;
+            // 
+            // contextMenuStrip_B
+            // 
+            this.contextMenuStrip_B.ImageScalingSize = new System.Drawing.Size(24, 24);
+            this.contextMenuStrip_B.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem4,
+            this.toolStripMenuItem5,
+            this.toolStripSeparator2,
+            this.toolStripMenuItem6});
+            this.contextMenuStrip_B.Name = "contextMenuStrip1";
+            this.contextMenuStrip_B.Size = new System.Drawing.Size(207, 94);
+            // 
+            // toolStripMenuItem4
+            // 
+            this.toolStripMenuItem4.Name = "toolStripMenuItem4";
+            this.toolStripMenuItem4.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem4.Text = "复制整个表";
+            this.toolStripMenuItem4.Click += new System.EventHandler(this.toolStripMenuItem4_Click);
+            // 
+            // toolStripMenuItem5
+            // 
+            this.toolStripMenuItem5.Name = "toolStripMenuItem5";
+            this.toolStripMenuItem5.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem5.Text = "复制选择区域";
+            this.toolStripMenuItem5.Click += new System.EventHandler(this.toolStripMenuItem5_Click);
+            // 
+            // toolStripSeparator2
+            // 
+            this.toolStripSeparator2.Name = "toolStripSeparator2";
+            this.toolStripSeparator2.Size = new System.Drawing.Size(203, 6);
+            // 
+            // toolStripMenuItem6
+            // 
+            this.toolStripMenuItem6.Name = "toolStripMenuItem6";
+            this.toolStripMenuItem6.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem6.Text = "恢复至初始状态";
+            // 
+            // Gview_gzC
+            // 
+            this.Gview_gzC.AllowUserToAddRows = false;
+            this.Gview_gzC.AllowUserToDeleteRows = false;
+            this.Gview_gzC.AllowUserToResizeRows = false;
+            this.Gview_gzC.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzC.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzC.ContextMenuStrip = this.contextMenuStrip_C;
+            this.Gview_gzC.Location = new System.Drawing.Point(80, 495);
+            this.Gview_gzC.Name = "Gview_gzC";
+            this.Gview_gzC.ReadOnly = true;
+            this.Gview_gzC.RowHeadersVisible = false;
+            this.Gview_gzC.RowHeadersWidth = 40;
+            this.Gview_gzC.RowTemplate.Height = 30;
+            this.Gview_gzC.Size = new System.Drawing.Size(1311, 206);
+            this.Gview_gzC.TabIndex = 3;
+            // 
+            // contextMenuStrip_C
+            // 
+            this.contextMenuStrip_C.ImageScalingSize = new System.Drawing.Size(24, 24);
+            this.contextMenuStrip_C.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem7,
+            this.toolStripMenuItem8,
+            this.toolStripSeparator3,
+            this.toolStripMenuItem9});
+            this.contextMenuStrip_C.Name = "contextMenuStrip1";
+            this.contextMenuStrip_C.Size = new System.Drawing.Size(207, 94);
+            // 
+            // toolStripMenuItem7
+            // 
+            this.toolStripMenuItem7.Name = "toolStripMenuItem7";
+            this.toolStripMenuItem7.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem7.Text = "复制整个表";
+            this.toolStripMenuItem7.Click += new System.EventHandler(this.toolStripMenuItem7_Click);
+            // 
+            // toolStripMenuItem8
+            // 
+            this.toolStripMenuItem8.Name = "toolStripMenuItem8";
+            this.toolStripMenuItem8.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem8.Text = "复制选择区域";
+            this.toolStripMenuItem8.Click += new System.EventHandler(this.toolStripMenuItem8_Click);
+            // 
+            // toolStripSeparator3
+            // 
+            this.toolStripSeparator3.Name = "toolStripSeparator3";
+            this.toolStripSeparator3.Size = new System.Drawing.Size(203, 6);
+            // 
+            // toolStripMenuItem9
+            // 
+            this.toolStripMenuItem9.Name = "toolStripMenuItem9";
+            this.toolStripMenuItem9.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem9.Text = "恢复至初始状态";
+            // 
+            // Gview_gzD
+            // 
+            this.Gview_gzD.AllowUserToAddRows = false;
+            this.Gview_gzD.AllowUserToDeleteRows = false;
+            this.Gview_gzD.AllowUserToResizeRows = false;
+            this.Gview_gzD.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzD.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzD.ContextMenuStrip = this.contextMenuStrip_D;
+            this.Gview_gzD.Location = new System.Drawing.Point(80, 730);
+            this.Gview_gzD.Name = "Gview_gzD";
+            this.Gview_gzD.ReadOnly = true;
+            this.Gview_gzD.RowHeadersVisible = false;
+            this.Gview_gzD.RowHeadersWidth = 40;
+            this.Gview_gzD.RowTemplate.Height = 30;
+            this.Gview_gzD.Size = new System.Drawing.Size(1311, 206);
+            this.Gview_gzD.TabIndex = 4;
+            // 
+            // contextMenuStrip_D
+            // 
+            this.contextMenuStrip_D.ImageScalingSize = new System.Drawing.Size(24, 24);
+            this.contextMenuStrip_D.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem10,
+            this.toolStripMenuItem11,
+            this.toolStripSeparator4,
+            this.toolStripMenuItem12});
+            this.contextMenuStrip_D.Name = "contextMenuStrip1";
+            this.contextMenuStrip_D.Size = new System.Drawing.Size(207, 94);
+            // 
+            // toolStripMenuItem10
+            // 
+            this.toolStripMenuItem10.Name = "toolStripMenuItem10";
+            this.toolStripMenuItem10.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem10.Text = "复制整个表";
+            this.toolStripMenuItem10.Click += new System.EventHandler(this.toolStripMenuItem10_Click);
+            // 
+            // toolStripMenuItem11
+            // 
+            this.toolStripMenuItem11.Name = "toolStripMenuItem11";
+            this.toolStripMenuItem11.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem11.Text = "复制选择区域";
+            this.toolStripMenuItem11.Click += new System.EventHandler(this.toolStripMenuItem11_Click);
+            // 
+            // toolStripSeparator4
+            // 
+            this.toolStripSeparator4.Name = "toolStripSeparator4";
+            this.toolStripSeparator4.Size = new System.Drawing.Size(203, 6);
+            // 
+            // toolStripMenuItem12
+            // 
+            this.toolStripMenuItem12.Name = "toolStripMenuItem12";
+            this.toolStripMenuItem12.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem12.Text = "恢复至初始状态";
+            // 
+            // Gview_gzDS
+            // 
+            this.Gview_gzDS.AllowUserToAddRows = false;
+            this.Gview_gzDS.AllowUserToDeleteRows = false;
+            this.Gview_gzDS.AllowUserToResizeRows = false;
+            this.Gview_gzDS.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzDS.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzDS.ContextMenuStrip = this.contextMenuStrip_DS;
+            this.Gview_gzDS.Location = new System.Drawing.Point(80, 980);
+            this.Gview_gzDS.Name = "Gview_gzDS";
+            this.Gview_gzDS.ReadOnly = true;
+            this.Gview_gzDS.RowHeadersVisible = false;
+            this.Gview_gzDS.RowHeadersWidth = 40;
+            this.Gview_gzDS.RowTemplate.Height = 30;
+            this.Gview_gzDS.Size = new System.Drawing.Size(1311, 206);
+            this.Gview_gzDS.TabIndex = 5;
+            // 
+            // contextMenuStrip_DS
+            // 
+            this.contextMenuStrip_DS.ImageScalingSize = new System.Drawing.Size(24, 24);
+            this.contextMenuStrip_DS.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem13,
+            this.toolStripMenuItem14,
+            this.toolStripSeparator5,
+            this.toolStripMenuItem15});
+            this.contextMenuStrip_DS.Name = "contextMenuStrip1";
+            this.contextMenuStrip_DS.Size = new System.Drawing.Size(207, 94);
+            // 
+            // toolStripMenuItem13
+            // 
+            this.toolStripMenuItem13.Name = "toolStripMenuItem13";
+            this.toolStripMenuItem13.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem13.Text = "复制整个表";
+            this.toolStripMenuItem13.Click += new System.EventHandler(this.toolStripMenuItem13_Click);
+            // 
+            // toolStripMenuItem14
+            // 
+            this.toolStripMenuItem14.Name = "toolStripMenuItem14";
+            this.toolStripMenuItem14.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem14.Text = "复制选择区域";
+            this.toolStripMenuItem14.Click += new System.EventHandler(this.toolStripMenuItem14_Click);
+            // 
+            // toolStripSeparator5
+            // 
+            this.toolStripSeparator5.Name = "toolStripSeparator5";
+            this.toolStripSeparator5.Size = new System.Drawing.Size(203, 6);
+            // 
+            // toolStripMenuItem15
+            // 
+            this.toolStripMenuItem15.Name = "toolStripMenuItem15";
+            this.toolStripMenuItem15.Size = new System.Drawing.Size(206, 28);
+            this.toolStripMenuItem15.Text = "恢复至初始状态";
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label1.Location = new System.Drawing.Point(6, 24);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(54, 29);
+            this.label1.TabIndex = 6;
+            this.label1.Text = "A类";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label2.Location = new System.Drawing.Point(3, 260);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(53, 29);
+            this.label2.TabIndex = 6;
+            this.label2.Text = "B类";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label3.Location = new System.Drawing.Point(4, 495);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(53, 29);
+            this.label3.TabIndex = 6;
+            this.label3.Text = "C类";
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label4.Location = new System.Drawing.Point(4, 730);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(54, 29);
+            this.label4.TabIndex = 6;
+            this.label4.Text = "D类";
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label5.Location = new System.Drawing.Point(6, 948);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(129, 29);
+            this.label5.TabIndex = 6;
+            this.label5.Text = "D类超尺寸";
+            // 
+            // panel1
+            // 
+            this.panel1.AutoScroll = true;
+            this.panel1.BackColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.panel1.Controls.Add(this.pictureBox5);
+            this.panel1.Controls.Add(this.Gview_gzD);
+            this.panel1.Controls.Add(this.Gview_gzA);
+            this.panel1.Controls.Add(this.Gview_gzB);
+            this.panel1.Controls.Add(this.Gview_gzC);
+            this.panel1.Controls.Add(this.Gview_gzDS);
+            this.panel1.Controls.Add(this.label1);
+            this.panel1.Controls.Add(this.label5);
+            this.panel1.Controls.Add(this.label2);
+            this.panel1.Controls.Add(this.label4);
+            this.panel1.Controls.Add(this.label3);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.panel1.Location = new System.Drawing.Point(0, 0);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(1581, 1238);
+            this.panel1.TabIndex = 12;
+            // 
+            // pictureBox5
+            // 
+            this.pictureBox5.Location = new System.Drawing.Point(1852, 1161);
+            this.pictureBox5.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox5.Name = "pictureBox5";
+            this.pictureBox5.Size = new System.Drawing.Size(254, 46);
+            this.pictureBox5.TabIndex = 11;
+            this.pictureBox5.TabStop = false;
+            // 
+            // ASTMStandardABCDDS
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.panel1);
+            this.Name = "ASTMStandardABCDDS";
+            this.Size = new System.Drawing.Size(1581, 1238);
+            this.Load += new System.EventHandler(this.ASTMStandardABCDDS_Load);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzA)).EndInit();
+            this.contextMenuStrip_A.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzB)).EndInit();
+            this.contextMenuStrip_B.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzC)).EndInit();
+            this.contextMenuStrip_C.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzD)).EndInit();
+            this.contextMenuStrip_D.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzDS)).EndInit();
+            this.contextMenuStrip_DS.ResumeLayout(false);
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        public System.Windows.Forms.DataGridView Gview_gzA;
+        public System.Windows.Forms.DataGridView Gview_gzB;
+        public System.Windows.Forms.DataGridView Gview_gzC;
+        public System.Windows.Forms.DataGridView Gview_gzD;
+        public System.Windows.Forms.DataGridView Gview_gzDS;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip_A;
+        private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem1;
+        private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem2;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+        private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem3;
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip_B;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem5;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem6;
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip_C;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem7;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem8;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9;
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip_D;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem10;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem12;
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip_DS;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem13;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem14;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem15;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.PictureBox pictureBox5;
+    }
+}

+ 135 - 0
OTSIncAReportApp/GBCalculate/ASTMStandardABCDDS.resx

@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="contextMenuStrip_A.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip_B.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>259, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip_C.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>500, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip_D.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>741, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip_DS.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>984, 17</value>
+  </metadata>
+</root>

+ 761 - 0
OTSIncAReportApp/GBCalculate/ChineseStandardABCDDS.cs

@@ -0,0 +1,761 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using OTSREPORTCLR;
+
+using System.Collections;
+using OTSSysMgrTools;
+
+namespace OTSIncAReportGB
+{
+    public partial class ChineseStandardABCDDS : UserControl
+    {
+        #region 全局变量
+        //设置数据表
+        public DataTable m_dt_A = new DataTable();
+        public DataTable m_dt_B = new DataTable();
+        public DataTable m_dt_C = new DataTable();
+        public DataTable m_dt_D = new DataTable();
+        public DataTable m_dt_DS = new DataTable();
+
+        //底层相关,项目操作管理类
+        COTSReportCalculateClr m_COTSReportProjFileMgrClr = null;
+
+        //日志类
+        //public NSLogFunExport.CFunExportClass m_LogFunExport = null;
+
+        //日志文件名
+        const String m_csFileName = "OTSReportAppLog";
+
+
+        //获取从框架得到的底层计算结果,国标表A
+        List<CGridDataClr> m_list_cgriddataclr_A = null;
+
+        //获取从框架得到的底层计算结果,国标表B
+        List<CGridDataClr> m_list_cgriddataclr_B = null;
+
+        //获取从框架得到的底层计算结果,国标表C
+        List<CGridDataClr> m_list_cgriddataclr_C = null;
+
+        //获取从框架得到的底层计算结果,国标表D
+        List<CGridDataClr> m_list_cgriddataclr_D = null;
+
+        //获取从框架得到的底层计算结果,国标表DS
+        List<CGridDataClr> m_list_cgriddataclr_DS = null;
+        //定义整个一组返回List
+        List<CGridDataClr> m_list_ALL = null;
+
+        //接收底层数据
+        public List<CGridDataClr> DataAll;
+        //一个数据源包含几个列数的记录数
+        private int m_oneresult_columnscount_A = 3;
+        private int m_oneresult_columnscount_B = 3;
+        private int m_oneresult_columnscount_C = 3;
+        private int m_oneresult_columnscount_D = 3;
+        private int m_oneresult_columnscount_DS = 3;
+
+        #endregion
+
+        #region 自定义方法
+
+        private void SetDataGridViewStyleAll()
+        {
+            //用户不能调整标题的高度
+            Gview_gzA.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzA.AllowUserToResizeRows = false;
+
+            //点击选择整行
+            Gview_gzA.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzA.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzA.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzA.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzA.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,B类表
+        /// </summary>
+        private void SetDataGridViewStyleB()
+        {
+            //用户不能调整标题的高度
+            Gview_gzB.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzB.AllowUserToResizeRows = false;
+
+            //点击选择整行
+            Gview_gzB.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzB.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzB.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzB.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzB.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzB.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzB.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzB.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,C类表
+        /// </summary>
+        private void SetDataGridViewStyleC()
+        {
+            //用户不能调整标题的高度
+            Gview_gzC.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzC.AllowUserToResizeRows = false;
+
+            //点击选择整行
+            Gview_gzC.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzC.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzC.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzC.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzC.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzC.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzC.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzC.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,D类表
+        /// </summary>
+        private void SetDataGridViewStyleD()
+        {
+            //用户不能调整标题的高度
+            Gview_gzD.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzD.AllowUserToResizeRows = false;
+
+            //改变行的高度;
+            //Gview_gz.RowTemplate.Height = 20;
+
+            //点击选择整行
+            Gview_gzD.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzD.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzD.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzD.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzD.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzD.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzD.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzD.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,DS类表
+        /// </summary>
+        private void SetDataGridViewStyleDS()
+        {
+            //用户不能调整标题的高度
+            Gview_gzDS.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzDS.AllowUserToResizeRows = false;
+
+            //点击选择整行
+            Gview_gzDS.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzDS.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzDS.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzDS.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzDS.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzDS.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzDS.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzDS.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+
+        #endregion
+
+        #region 窗体加载及初始化
+        public ChineseStandardABCDDS()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// 国标报表,构造函数,接收A,B,C,D,DS五种结果,并进行显示
+        /// </summary>
+        /// <param name="in_sec"></param>
+        /// <param name="in_Cotsreportprojfilemgrclr"></param>
+        /// <param name="in_list_CGridDataClrAll"></param>   //all  代表A、B、C、D、DS按顺序得表
+        public string ColumnName;
+        public string RowName;
+        #region 国际化语言
+        Language lan;
+        Hashtable table;
+        #endregion
+        public ChineseStandardABCDDS(COTSReportCalculateClr in_Cotsreportprojfilemgrclr, List<CGridDataClr> in_list_CGridDataClrAll)
+        {
+
+            DataAll = in_list_CGridDataClrAll;
+            //初始化日志文件名称
+            //m_LogFunExport = new NSLogFunExport.CFunExportClass();
+            //m_LogFunExport.InitLog(m_csFileName);
+
+
+            //获取报告项目类对象
+            m_COTSReportProjFileMgrClr = in_Cotsreportprojfilemgrclr;
+
+            m_list_cgriddataclr_A = in_list_CGridDataClrAll.GetRange(0, 1);
+            m_list_cgriddataclr_B = in_list_CGridDataClrAll.GetRange(1, 1);
+            m_list_cgriddataclr_C = in_list_CGridDataClrAll.GetRange(2, 1);
+            m_list_cgriddataclr_D = in_list_CGridDataClrAll.GetRange(3, 1);
+            m_list_cgriddataclr_DS = in_list_CGridDataClrAll.GetRange(4, 1);
+            m_list_ALL = in_list_CGridDataClrAll;
+
+            //初始化底层操作类
+           // m_OTSIncAReportGridsFun = new OTSIncAReportGridsFun(m_COTSReportProjFileMgrClr, m_list_cgriddataclr_A);
+
+            InitializeComponent();
+            #region 国际化语言
+            lan = new Language(this);
+            table = lan.GetNameTable(this.Name);
+            #endregion
+        }
+
+        private void ChineseStandardABCDDS_Load(object sender, EventArgs e)
+        {
+
+            //从底层结果类对象中,分解出数据保存到datatable中
+
+            if (m_list_ALL.Count > 6)
+            {
+                int SouseData = (m_COTSReportProjFileMgrClr.GetSmplMsrResultMgrs().Count) * 5;
+                for (int g = 0; g < m_COTSReportProjFileMgrClr.GetSmplMsrResultMgrs().Count; g++)
+                {
+                    for (int i = 0; i < 5; i++)
+                    {
+                        DataTable dt = new DataTable();
+                        DataColumn cc = new DataColumn();
+                        int q = g * 6 + i;
+                        dt = ChineseStandardABCD_GetDataTable_Total(DataAll.GetRange(q, 1), out m_oneresult_columnscount_A);
+                        DataGridView aa = new DataGridView();
+                        int start = 40;
+                        int end = 0;
+                        end = 150 * q;
+                        aa.Location = new Point(start, end);
+                        aa.Width = panel1.Width;
+                        aa.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+                        aa.BackgroundColor = Color.White;
+                        panel1.Controls.Add(aa);
+                        aa.DataSource = dt;
+                        aa.Name = i.ToString();
+
+                        Label bb = new Label();
+                        int startLabel = 0;
+                        int endLabel = 0;
+                        endLabel = 150 * q;
+                        bb.Location = new Point(startLabel, endLabel);
+                        bb.Width = 75;
+                        for (int t = 0; t < SouseData; t++)
+                        {
+                            if (i == t * 5)
+                            {
+                                bb.Text = table["label1"].ToString();
+                                break;
+                            }
+                            if (i == t * 5 + 1)
+                            {
+                                bb.Text = table["label2"].ToString();
+                            }
+                            if (i == t * 5 + 2)
+                            {
+                                bb.Text = table["label3"].ToString();
+                            }
+                            if (i == t * 5 + 3)
+                            {
+                                bb.Text = table["label4"].ToString();
+                            }
+                            if (i == t * 5 + 4)
+                            {
+                                bb.Text = table["label5"].ToString();
+                            }
+
+                        }
+                        bb.Font = new Font(bb.Font.Name, 12, FontStyle.Bold | FontStyle.Underline);
+                        panel1.Controls.Add(bb);
+                    }
+                }
+
+                Gview_gzA.Visible = false;
+                Gview_gzB.Visible = false;
+                Gview_gzC.Visible = false;
+                Gview_gzD.Visible = false;
+                Gview_gzDS.Visible = false;
+                label1.Visible = false;
+                label2.Visible = false;
+                label3.Visible = false;
+                label4.Visible = false;
+                label5.Visible = false;
+                Invalidate();
+            }
+            else
+            {
+                m_dt_A = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_A, out m_oneresult_columnscount_A);
+                m_dt_B = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_B, out m_oneresult_columnscount_B);
+                m_dt_C = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_C, out m_oneresult_columnscount_C);
+                m_dt_D = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_D, out m_oneresult_columnscount_D);
+                m_dt_DS = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_DS, out m_oneresult_columnscount_DS);
+                Gview_gzA.DataSource = m_dt_A;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzA.Columns[i].Width = 68;
+                }
+                Gview_gzB.DataSource = m_dt_B;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzB.Columns[i].Width = 68;
+                }
+                Gview_gzC.DataSource = m_dt_C;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzC.Columns[i].Width = 68;
+                }
+                Gview_gzD.DataSource = m_dt_D;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzD.Columns[i].Width = 68;
+                }
+                Gview_gzDS.DataSource = m_dt_DS;
+
+                Gview_gzA.Width = panel1.Width;
+                Gview_gzB.Width = panel1.Width;
+                Gview_gzC.Width = panel1.Width;
+                Gview_gzD.Width = panel1.Width;
+                Gview_gzDS.Width = panel1.Width;
+
+            }
+
+            Invalidate();
+
+        }
+
+        #endregion
+
+        #region 相关事件
+        /// <summary>
+        /// 复制选择区域,A
+        /// </summary>
+        public void CopySelected_A()
+        {
+            //复制选择区域
+            object oo = Gview_gzA.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,B
+        /// </summary>
+        public void CopySelected_B()
+        {
+            //复制选择区域
+            object oo = Gview_gzB.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,C
+        /// </summary>
+        public void CopySelected_C()
+        {
+            //复制选择区域
+            object oo = Gview_gzC.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,D
+        /// </summary>
+        public void CopySelected_D()
+        {
+            //复制选择区域
+            object oo = Gview_gzD.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,DS
+        /// </summary>
+        public void CopySelected_DS()
+        {
+            //复制选择区域
+            object oo = Gview_gzDS.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,A
+        /// </summary>
+        public void CopyAll_A()
+        {
+            Gview_gzA.SelectAll();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,B
+        /// </summary>
+        public void CopyAll_B()
+        {
+            Gview_gzB.SelectAll();
+            Clipboard.SetDataObject(Gview_gzB.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,C
+        /// </summary>
+        public void CopyAll_C()
+        {
+            Gview_gzC.SelectAll();
+            Clipboard.SetDataObject(Gview_gzC.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,D
+        /// </summary>
+        public void CopyAll_D()
+        {
+            Gview_gzD.SelectAll();
+            Clipboard.SetDataObject(Gview_gzD.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,DS
+        /// </summary>
+        public void CopyAll_DS()
+        {
+            Gview_gzDS.SelectAll();
+            Clipboard.SetDataObject(Gview_gzDS.GetClipboardContent());
+        }
+
+
+        private void ToolStripMenuItem1_Click(object sender, EventArgs e)
+        {
+            //A,复制整个表
+            CopyAll_A();
+        }
+
+        private void ToolStripMenuItem2_Click(object sender, EventArgs e)
+        {
+            //A,复制选择区域
+            CopySelected_A();
+        }
+
+
+        private void toolStripMenuItem4_Click(object sender, EventArgs e)
+        {
+            //B,复制整个表
+            CopyAll_B();
+        }
+
+        private void toolStripMenuItem5_Click(object sender, EventArgs e)
+        {
+            //B,复制选择区域
+            CopySelected_B();
+        }
+
+
+        private void toolStripMenuItem7_Click(object sender, EventArgs e)
+        {
+            //C,复制整个表
+            CopyAll_C();
+        }
+
+        private void toolStripMenuItem8_Click(object sender, EventArgs e)
+        {
+            //C,复制选择区域
+            CopySelected_C();
+        }
+
+
+        private void toolStripMenuItem10_Click(object sender, EventArgs e)
+        {
+            //D,复制整个表
+            CopyAll_D();
+        }
+
+        private void toolStripMenuItem11_Click(object sender, EventArgs e)
+        {
+            //D,复制选择区域
+            CopySelected_D();
+        }
+
+        private void toolStripMenuItem13_Click(object sender, EventArgs e)
+        {
+            //DS,复制整个表
+            CopyAll_DS();
+        }
+
+        private void toolStripMenuItem14_Click(object sender, EventArgs e)
+        {
+            //DS,复制选择区域
+            CopySelected_DS();
+        }
+        #endregion
+
+        #region 获取向导出模块提供的DataTable和GridView对象
+        /// <summary>
+        /// 获取到该模块输出后形成的DataTable,和GridView
+        /// </summary>
+        /// <param name="out_dt"></param>
+        /// <param name="out_dg"></param>
+        public void GetDataTableAndGridView(out DataTable out_dtA, out DataTable out_dtB, out DataTable out_dtC, out DataTable out_dtD, out DataTable out_dtDS,
+            out DataGridView out_dgA, out DataGridView out_dgB, out DataGridView out_dgC, out DataGridView out_dgD, out DataGridView out_dgDS)
+        {
+            //从panel中找出前5个datagridview,然后进行输出
+            foreach (Control ctl in this.panel1.Controls)
+            {
+                if (ctl.Name == "0")
+                {
+                    this.Gview_gzA = (DataGridView)ctl;
+                }
+                if (ctl.Name == "1")
+                {
+                    this.Gview_gzB = (DataGridView)ctl;
+                }
+                if (ctl.Name == "2")
+                {
+                    this.Gview_gzC = (DataGridView)ctl;
+                }
+                if (ctl.Name == "3")
+                {
+                    this.Gview_gzD = (DataGridView)ctl;
+                }
+                if (ctl.Name == "4")
+                {
+                    this.Gview_gzDS = (DataGridView)ctl;
+                }
+            }
+
+            out_dtA = m_dt_A;
+            out_dgA = this.Gview_gzA;
+
+            out_dtB = m_dt_B;
+            out_dgB = this.Gview_gzB;
+
+            out_dtC = m_dt_C;
+            out_dgC = this.Gview_gzC;
+
+            out_dtD = m_dt_D;
+            out_dgD = this.Gview_gzD;
+
+            out_dtDS = m_dt_DS;
+            out_dgDS = this.Gview_gzDS;
+        }
+
+        #endregion
+
+
+        #region clr加载数据部分
+        public DataTable ChineseStandardABCD_GetDataTable_Total(List<CGridDataClr> in_list_cgriddataclr, out int oneresult_columncount)
+        {
+            oneresult_columncount = 1;//一个数据源的跨度,计算出一个数据源包含几个列
+            //创建一个临时表
+            DataTable ret_dt = new DataTable();
+
+            //判断传入的数据对象是否为空
+            if (in_list_cgriddataclr == null)
+            {
+                string str1 = "传入分解表格数据的CGridDataClr对象为空!";
+                str1 = table["str1"].ToString();
+                //log.Error("(OTSIncAReportGridsFun.ChineseStandardABCD_GetDataTable_Total)" + str1);
+                return ret_dt;
+            }
+
+            #region 根据返回的结构创建DataTable的结构---------------------------------------------
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+
+                //单个数据源包含几个列的跨度
+                if (oneresult_columncount < list_cgridcolumnclrs.Count())
+                    oneresult_columncount = list_cgridcolumnclrs.Count();
+
+                if (in_list_cgriddataclr.Count > 1)
+                {
+                    //创建DT的列,多个数据源,为每个字段带上索引号
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        string ls_fl_strName = ls_cgridcolumnclr.GetName();
+
+                        //通过获取到的列,创建表的列
+                        ret_dt.Columns.Add(ls_fl_strName + "(" + (i + 1).ToString() + ")");
+                    }
+                }
+                else
+                {
+                    //创建DT的列,单个数据源,不带索引号
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        string ls_fl_strName = ls_cgridcolumnclr.GetName();
+
+                        //通过获取到的列,创建表的列
+                        ret_dt.Columns.Add(ls_fl_strName);
+                    }
+                }
+            }
+            #endregion
+
+            #region 再创建表的行------------------------------------------------------------------
+            //取最大的rowlistcount,要不然,不知道这底层返回的数据居然还有2,2,3这样的行数据
+            int maxrownumber = 0;
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+
+                //创建DT的行
+                if (list_cgridcolumnclrs != null)
+                {
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        if (maxrownumber < ls_cgridcolumnclr.GetRowList().Count())
+                        {
+                            maxrownumber = ls_cgridcolumnclr.GetRowList().Count();
+                        }
+                    }
+                }
+            }
+            for (int k = 0; k < maxrownumber; k++)
+            {
+                DataRow dr = ret_dt.NewRow();
+                ret_dt.Rows.Add(dr);
+            }
+            #endregion
+
+            #region //再次重新分解,先分解列,然后将获取到的各行各列的数据,填充到相应的位置上---
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+                                                                                       //再次重新分解,先分解列,然后将获取到的
+                for (int k = 0; k < list_cgridcolumnclrs.Count(); k++)
+                {
+                    string ls_fl_strName = list_cgridcolumnclrs[k].GetName();
+                    List<CGridRowClr> ls_list_cgridrowclr = new List<CGridRowClr>();
+                    ls_list_cgridrowclr = list_cgridcolumnclrs[k].GetRowList();
+
+                    for (int j = 0; j < ls_list_cgridrowclr.Count(); j++)
+                    {
+                        //先判断该行该单元格的数据类型
+                        string str_value = "";//因为显示只需要对字符串进行操作就可以了,所以将底层获取到的数据,除了颗粒类型外的都转成string
+
+                        switch (ls_list_cgridrowclr[j].GetDataType())
+                        {
+                            case 0:
+                                //string
+                                str_value = ls_list_cgridrowclr[j].GetStringValue();
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                            case 1:
+                                //该元素含量表没有需要显示的颗粒图像
+                                //ret_dt.Rows[j][k+i*oneresult_columncount] = GetBitmapByParticleList(ls_list_cgridrowclr[k].GetParticle());
+                                break;
+                            case 2:
+                                //int
+                                str_value = ls_list_cgridrowclr[j].GetIntValue().ToString();
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                            case 3:
+                                //float
+                                str_value = ls_list_cgridrowclr[j].GetDoubleValue().ToString("0.00");
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                            default:
+                                str_value = "";
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                        }
+                    }
+                }
+            }
+            #endregion
+
+            return ret_dt;
+        }
+        #endregion
+
+
+    }
+}

+ 506 - 0
OTSIncAReportApp/GBCalculate/ChineseStandardABCDDS.designer.cs

@@ -0,0 +1,506 @@
+namespace OTSIncAReportGB
+{
+    partial class ChineseStandardABCDDS
+    {
+        /// <summary> 
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region 组件设计器生成的代码
+
+        /// <summary> 
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ChineseStandardABCDDS));
+            this.Gview_gzA = new System.Windows.Forms.DataGridView();
+            this.contextMenuStrip_A = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+            this.ToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+            this.ToolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
+            this.Gview_gzB = new System.Windows.Forms.DataGridView();
+            this.contextMenuStrip_B = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripMenuItem6 = new System.Windows.Forms.ToolStripMenuItem();
+            this.Gview_gzC = new System.Windows.Forms.DataGridView();
+            this.contextMenuStrip_C = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripMenuItem();
+            this.Gview_gzD = new System.Windows.Forms.DataGridView();
+            this.contextMenuStrip_D = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripMenuItem12 = new System.Windows.Forms.ToolStripMenuItem();
+            this.Gview_gzDS = new System.Windows.Forms.DataGridView();
+            this.contextMenuStrip_DS = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.toolStripMenuItem13 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripMenuItem();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.label5 = new System.Windows.Forms.Label();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.pictureBox5 = new System.Windows.Forms.PictureBox();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzA)).BeginInit();
+            this.contextMenuStrip_A.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzB)).BeginInit();
+            this.contextMenuStrip_B.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzC)).BeginInit();
+            this.contextMenuStrip_C.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzD)).BeginInit();
+            this.contextMenuStrip_D.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzDS)).BeginInit();
+            this.contextMenuStrip_DS.SuspendLayout();
+            this.panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // Gview_gzA
+            // 
+            this.Gview_gzA.AllowUserToAddRows = false;
+            this.Gview_gzA.AllowUserToDeleteRows = false;
+            this.Gview_gzA.AllowUserToResizeRows = false;
+            this.Gview_gzA.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzA.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzA.ContextMenuStrip = this.contextMenuStrip_A;
+            this.Gview_gzA.Location = new System.Drawing.Point(53, 16);
+            this.Gview_gzA.Margin = new System.Windows.Forms.Padding(2);
+            this.Gview_gzA.Name = "Gview_gzA";
+            this.Gview_gzA.ReadOnly = true;
+            this.Gview_gzA.RowHeadersVisible = false;
+            this.Gview_gzA.RowHeadersWidth = 40;
+            this.Gview_gzA.RowTemplate.Height = 30;
+            this.Gview_gzA.Size = new System.Drawing.Size(874, 137);
+            this.Gview_gzA.TabIndex = 1;
+            // 
+            // contextMenuStrip_A
+            // 
+            this.contextMenuStrip_A.ImageScalingSize = new System.Drawing.Size(24, 24);
+            this.contextMenuStrip_A.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.ToolStripMenuItem1,
+            this.ToolStripMenuItem2,
+            this.toolStripSeparator1,
+            this.ToolStripMenuItem3});
+            this.contextMenuStrip_A.Name = "contextMenuStrip1";
+            this.contextMenuStrip_A.Size = new System.Drawing.Size(161, 76);
+            // 
+            // ToolStripMenuItem1
+            // 
+            this.ToolStripMenuItem1.Name = "ToolStripMenuItem1";
+            this.ToolStripMenuItem1.Size = new System.Drawing.Size(160, 22);
+            this.ToolStripMenuItem1.Text = "复制整个表";
+            this.ToolStripMenuItem1.Click += new System.EventHandler(this.ToolStripMenuItem1_Click);
+            // 
+            // ToolStripMenuItem2
+            // 
+            this.ToolStripMenuItem2.Name = "ToolStripMenuItem2";
+            this.ToolStripMenuItem2.Size = new System.Drawing.Size(160, 22);
+            this.ToolStripMenuItem2.Text = "复制选择区域";
+            this.ToolStripMenuItem2.Click += new System.EventHandler(this.ToolStripMenuItem2_Click);
+            // 
+            // toolStripSeparator1
+            // 
+            this.toolStripSeparator1.Name = "toolStripSeparator1";
+            this.toolStripSeparator1.Size = new System.Drawing.Size(157, 6);
+            // 
+            // ToolStripMenuItem3
+            // 
+            this.ToolStripMenuItem3.Name = "ToolStripMenuItem3";
+            this.ToolStripMenuItem3.Size = new System.Drawing.Size(160, 22);
+            this.ToolStripMenuItem3.Text = "恢复至初始状态";
+            // 
+            // Gview_gzB
+            // 
+            this.Gview_gzB.AllowUserToAddRows = false;
+            this.Gview_gzB.AllowUserToDeleteRows = false;
+            this.Gview_gzB.AllowUserToResizeRows = false;
+            this.Gview_gzB.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzB.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzB.ContextMenuStrip = this.contextMenuStrip_B;
+            this.Gview_gzB.Location = new System.Drawing.Point(53, 173);
+            this.Gview_gzB.Margin = new System.Windows.Forms.Padding(2);
+            this.Gview_gzB.Name = "Gview_gzB";
+            this.Gview_gzB.ReadOnly = true;
+            this.Gview_gzB.RowHeadersVisible = false;
+            this.Gview_gzB.RowHeadersWidth = 40;
+            this.Gview_gzB.RowTemplate.Height = 30;
+            this.Gview_gzB.Size = new System.Drawing.Size(874, 137);
+            this.Gview_gzB.TabIndex = 2;
+            // 
+            // contextMenuStrip_B
+            // 
+            this.contextMenuStrip_B.ImageScalingSize = new System.Drawing.Size(24, 24);
+            this.contextMenuStrip_B.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem4,
+            this.toolStripMenuItem5,
+            this.toolStripSeparator2,
+            this.toolStripMenuItem6});
+            this.contextMenuStrip_B.Name = "contextMenuStrip1";
+            this.contextMenuStrip_B.Size = new System.Drawing.Size(161, 76);
+            // 
+            // toolStripMenuItem4
+            // 
+            this.toolStripMenuItem4.Name = "toolStripMenuItem4";
+            this.toolStripMenuItem4.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem4.Text = "复制整个表";
+            this.toolStripMenuItem4.Click += new System.EventHandler(this.toolStripMenuItem4_Click);
+            // 
+            // toolStripMenuItem5
+            // 
+            this.toolStripMenuItem5.Name = "toolStripMenuItem5";
+            this.toolStripMenuItem5.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem5.Text = "复制选择区域";
+            this.toolStripMenuItem5.Click += new System.EventHandler(this.toolStripMenuItem5_Click);
+            // 
+            // toolStripSeparator2
+            // 
+            this.toolStripSeparator2.Name = "toolStripSeparator2";
+            this.toolStripSeparator2.Size = new System.Drawing.Size(157, 6);
+            // 
+            // toolStripMenuItem6
+            // 
+            this.toolStripMenuItem6.Name = "toolStripMenuItem6";
+            this.toolStripMenuItem6.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem6.Text = "恢复至初始状态";
+            // 
+            // Gview_gzC
+            // 
+            this.Gview_gzC.AllowUserToAddRows = false;
+            this.Gview_gzC.AllowUserToDeleteRows = false;
+            this.Gview_gzC.AllowUserToResizeRows = false;
+            this.Gview_gzC.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzC.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzC.ContextMenuStrip = this.contextMenuStrip_C;
+            this.Gview_gzC.Location = new System.Drawing.Point(53, 330);
+            this.Gview_gzC.Margin = new System.Windows.Forms.Padding(2);
+            this.Gview_gzC.Name = "Gview_gzC";
+            this.Gview_gzC.ReadOnly = true;
+            this.Gview_gzC.RowHeadersVisible = false;
+            this.Gview_gzC.RowHeadersWidth = 40;
+            this.Gview_gzC.RowTemplate.Height = 30;
+            this.Gview_gzC.Size = new System.Drawing.Size(874, 137);
+            this.Gview_gzC.TabIndex = 3;
+            // 
+            // contextMenuStrip_C
+            // 
+            this.contextMenuStrip_C.ImageScalingSize = new System.Drawing.Size(24, 24);
+            this.contextMenuStrip_C.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem7,
+            this.toolStripMenuItem8,
+            this.toolStripSeparator3,
+            this.toolStripMenuItem9});
+            this.contextMenuStrip_C.Name = "contextMenuStrip1";
+            this.contextMenuStrip_C.Size = new System.Drawing.Size(161, 76);
+            // 
+            // toolStripMenuItem7
+            // 
+            this.toolStripMenuItem7.Name = "toolStripMenuItem7";
+            this.toolStripMenuItem7.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem7.Text = "复制整个表";
+            this.toolStripMenuItem7.Click += new System.EventHandler(this.toolStripMenuItem7_Click);
+            // 
+            // toolStripMenuItem8
+            // 
+            this.toolStripMenuItem8.Name = "toolStripMenuItem8";
+            this.toolStripMenuItem8.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem8.Text = "复制选择区域";
+            this.toolStripMenuItem8.Click += new System.EventHandler(this.toolStripMenuItem8_Click);
+            // 
+            // toolStripSeparator3
+            // 
+            this.toolStripSeparator3.Name = "toolStripSeparator3";
+            this.toolStripSeparator3.Size = new System.Drawing.Size(157, 6);
+            // 
+            // toolStripMenuItem9
+            // 
+            this.toolStripMenuItem9.Name = "toolStripMenuItem9";
+            this.toolStripMenuItem9.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem9.Text = "恢复至初始状态";
+            // 
+            // Gview_gzD
+            // 
+            this.Gview_gzD.AllowUserToAddRows = false;
+            this.Gview_gzD.AllowUserToDeleteRows = false;
+            this.Gview_gzD.AllowUserToResizeRows = false;
+            this.Gview_gzD.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzD.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzD.ContextMenuStrip = this.contextMenuStrip_D;
+            this.Gview_gzD.Location = new System.Drawing.Point(53, 487);
+            this.Gview_gzD.Margin = new System.Windows.Forms.Padding(2);
+            this.Gview_gzD.Name = "Gview_gzD";
+            this.Gview_gzD.ReadOnly = true;
+            this.Gview_gzD.RowHeadersVisible = false;
+            this.Gview_gzD.RowHeadersWidth = 40;
+            this.Gview_gzD.RowTemplate.Height = 30;
+            this.Gview_gzD.Size = new System.Drawing.Size(874, 137);
+            this.Gview_gzD.TabIndex = 4;
+            // 
+            // contextMenuStrip_D
+            // 
+            this.contextMenuStrip_D.ImageScalingSize = new System.Drawing.Size(24, 24);
+            this.contextMenuStrip_D.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem10,
+            this.toolStripMenuItem11,
+            this.toolStripSeparator4,
+            this.toolStripMenuItem12});
+            this.contextMenuStrip_D.Name = "contextMenuStrip1";
+            this.contextMenuStrip_D.Size = new System.Drawing.Size(161, 76);
+            // 
+            // toolStripMenuItem10
+            // 
+            this.toolStripMenuItem10.Name = "toolStripMenuItem10";
+            this.toolStripMenuItem10.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem10.Text = "复制整个表";
+            this.toolStripMenuItem10.Click += new System.EventHandler(this.toolStripMenuItem10_Click);
+            // 
+            // toolStripMenuItem11
+            // 
+            this.toolStripMenuItem11.Name = "toolStripMenuItem11";
+            this.toolStripMenuItem11.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem11.Text = "复制选择区域";
+            this.toolStripMenuItem11.Click += new System.EventHandler(this.toolStripMenuItem11_Click);
+            // 
+            // toolStripSeparator4
+            // 
+            this.toolStripSeparator4.Name = "toolStripSeparator4";
+            this.toolStripSeparator4.Size = new System.Drawing.Size(157, 6);
+            // 
+            // toolStripMenuItem12
+            // 
+            this.toolStripMenuItem12.Name = "toolStripMenuItem12";
+            this.toolStripMenuItem12.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem12.Text = "恢复至初始状态";
+            // 
+            // Gview_gzDS
+            // 
+            this.Gview_gzDS.AllowUserToAddRows = false;
+            this.Gview_gzDS.AllowUserToDeleteRows = false;
+            this.Gview_gzDS.AllowUserToResizeRows = false;
+            this.Gview_gzDS.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzDS.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzDS.ContextMenuStrip = this.contextMenuStrip_DS;
+            this.Gview_gzDS.Location = new System.Drawing.Point(53, 653);
+            this.Gview_gzDS.Margin = new System.Windows.Forms.Padding(2);
+            this.Gview_gzDS.Name = "Gview_gzDS";
+            this.Gview_gzDS.ReadOnly = true;
+            this.Gview_gzDS.RowHeadersVisible = false;
+            this.Gview_gzDS.RowHeadersWidth = 40;
+            this.Gview_gzDS.RowTemplate.Height = 30;
+            this.Gview_gzDS.Size = new System.Drawing.Size(874, 137);
+            this.Gview_gzDS.TabIndex = 5;
+            // 
+            // contextMenuStrip_DS
+            // 
+            this.contextMenuStrip_DS.ImageScalingSize = new System.Drawing.Size(24, 24);
+            this.contextMenuStrip_DS.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem13,
+            this.toolStripMenuItem14,
+            this.toolStripSeparator5,
+            this.toolStripMenuItem15});
+            this.contextMenuStrip_DS.Name = "contextMenuStrip1";
+            this.contextMenuStrip_DS.Size = new System.Drawing.Size(161, 76);
+            // 
+            // toolStripMenuItem13
+            // 
+            this.toolStripMenuItem13.Name = "toolStripMenuItem13";
+            this.toolStripMenuItem13.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem13.Text = "复制整个表";
+            this.toolStripMenuItem13.Click += new System.EventHandler(this.toolStripMenuItem13_Click);
+            // 
+            // toolStripMenuItem14
+            // 
+            this.toolStripMenuItem14.Name = "toolStripMenuItem14";
+            this.toolStripMenuItem14.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem14.Text = "复制选择区域";
+            this.toolStripMenuItem14.Click += new System.EventHandler(this.toolStripMenuItem14_Click);
+            // 
+            // toolStripSeparator5
+            // 
+            this.toolStripSeparator5.Name = "toolStripSeparator5";
+            this.toolStripSeparator5.Size = new System.Drawing.Size(157, 6);
+            // 
+            // toolStripMenuItem15
+            // 
+            this.toolStripMenuItem15.Name = "toolStripMenuItem15";
+            this.toolStripMenuItem15.Size = new System.Drawing.Size(160, 22);
+            this.toolStripMenuItem15.Text = "恢复至初始状态";
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label1.Location = new System.Drawing.Point(4, 16);
+            this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(36, 19);
+            this.label1.TabIndex = 6;
+            this.label1.Text = "A类";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label2.Location = new System.Drawing.Point(2, 173);
+            this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(36, 19);
+            this.label2.TabIndex = 6;
+            this.label2.Text = "B类";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label3.Location = new System.Drawing.Point(3, 330);
+            this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(36, 19);
+            this.label3.TabIndex = 6;
+            this.label3.Text = "C类";
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label4.Location = new System.Drawing.Point(3, 487);
+            this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(37, 19);
+            this.label4.TabIndex = 6;
+            this.label4.Text = "D类";
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label5.Location = new System.Drawing.Point(2, 653);
+            this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(47, 19);
+            this.label5.TabIndex = 6;
+            this.label5.Text = "DS类";
+            // 
+            // panel1
+            // 
+            this.panel1.AutoScroll = true;
+            this.panel1.BackColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.panel1.Controls.Add(this.pictureBox5);
+            this.panel1.Controls.Add(this.Gview_gzD);
+            this.panel1.Controls.Add(this.Gview_gzA);
+            this.panel1.Controls.Add(this.Gview_gzB);
+            this.panel1.Controls.Add(this.Gview_gzC);
+            this.panel1.Controls.Add(this.Gview_gzDS);
+            this.panel1.Controls.Add(this.label1);
+            this.panel1.Controls.Add(this.label5);
+            this.panel1.Controls.Add(this.label2);
+            this.panel1.Controls.Add(this.label4);
+            this.panel1.Controls.Add(this.label3);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.panel1.Location = new System.Drawing.Point(0, 0);
+            this.panel1.Margin = new System.Windows.Forms.Padding(2);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(1054, 825);
+            this.panel1.TabIndex = 12;
+            // 
+            // pictureBox5
+            // 
+            this.pictureBox5.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox5.BackgroundImage")));
+            this.pictureBox5.Location = new System.Drawing.Point(1235, 774);
+            this.pictureBox5.Name = "pictureBox5";
+            this.pictureBox5.Size = new System.Drawing.Size(169, 31);
+            this.pictureBox5.TabIndex = 11;
+            this.pictureBox5.TabStop = false;
+            // 
+            // ChineseStandardABCDDS
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.panel1);
+            this.Margin = new System.Windows.Forms.Padding(2);
+            this.Name = "ChineseStandardABCDDS";
+            this.Size = new System.Drawing.Size(1054, 825);
+            this.Load += new System.EventHandler(this.ChineseStandardABCDDS_Load);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzA)).EndInit();
+            this.contextMenuStrip_A.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzB)).EndInit();
+            this.contextMenuStrip_B.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzC)).EndInit();
+            this.contextMenuStrip_C.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzD)).EndInit();
+            this.contextMenuStrip_D.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzDS)).EndInit();
+            this.contextMenuStrip_DS.ResumeLayout(false);
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        public System.Windows.Forms.DataGridView Gview_gzA;
+        public System.Windows.Forms.DataGridView Gview_gzB;
+        public System.Windows.Forms.DataGridView Gview_gzC;
+        public System.Windows.Forms.DataGridView Gview_gzD;
+        public System.Windows.Forms.DataGridView Gview_gzDS;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip_A;
+        private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem1;
+        private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem2;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+        private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem3;
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip_B;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem5;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem6;
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip_C;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem7;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem8;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9;
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip_D;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem10;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem12;
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip_DS;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem13;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem14;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem15;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.PictureBox pictureBox5;
+    }
+}

+ 168 - 0
OTSIncAReportApp/GBCalculate/ChineseStandardABCDDS.resx

@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="contextMenuStrip_A.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip_B.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>249, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip_C.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>481, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip_D.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>713, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip_DS.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>945, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="pictureBox5.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAAKoAAAAfCAYAAAB3cVZEAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+        wwAADsMBx2+oZAAABhBJREFUeF7tmI1NZDEMhGmBGmiBHiiBGmiBDuiADqiACmiABuiAHvb0oTU3O2s7
+        eYvQ3ZMykgW8OI5/xk7urg4LCzvAIurCr+Lt7e3w+Ph4uLu7O1xdXZ3I7e3t4eHh4UtnhEXUhV8B5Lu5
+        uTkjZyUQ+f39/bj7HEOifnx8pB1xfX399e35+fnw+fl51D4Ha53DdBX2OUeB05n+SJ6eno4W/gIf8BN/
+        8Vv1+Zad77i/vz/ZxySoQJFCj/MuBXY4hxzp2eQTf15eXo6ap/AYZ4Q8KDRnrkeOu5qTT90zK/hd1aEk
+        Ko7MHsgBVTcQbLbHBRuaeJKR6Y2E8xT8PVu4qvBV07y+vh41TqG+Q6qtoFhOkEogsZJGm2SLQPwAcY1y
+        5sQO0FiqR/zUwPlBjJzj+pXdlKgE7l08kqob3JFOsBFJv4So7sOWs0My8kHgTBf7GZRklU4FCjrbWCHU
+        KnApUSPu2ZssIxQ2VMeHRgWPOePRGVEzktIVFCtIxE/+9oRmRVFbmlCQdW5GlIASgH0dnKToQ35NAmdl
+        sTqqm6XyQXVmiwUykhKz5gT/syaubgPg+j7dFJpjhDxG3TmbeIIPCnTUd12neZjYus7f6of6mOXsjKhe
+        FAoZjjq8g7LC6XpGZD8PhyuoXtbRgcyvqjjEprqI62rxnNjeWOzVdYo0C7fdTWPPm17dDidfBc+FD5YO
+        EDP2aQ275yN1icGhN0HGgROv2eSGKpIGVB9R+DWUdYp3ezUZnAAdoel41R2RxQvp+rqmBUGcTL4+C9/X
+        NSLw3Hb6Osk6Pbe5hajRZMoZ6q32MgldPXtIVL8uK9IoVB9RuKMZYXyKVJPPC+mTLDAiUoaOqN4gJFZ9
+        pjAKnSBbCu3NpU+UDLNE9eGDfxV8oiIz+dN9oc83b5CIiZ/8rbY3EVUNI8H2DqqPKJz4Dk929j4MuK2q
+        kFyBqlcRWtERVYkfpOxuAbU1U2TgzTBD8FmieuOqrxk8Fwh16fKoT62w73kbcUnjad+oHnj35lHoHiea
+        Th5NPk5TbG+MLhndFFOovU5P4cXRJtAGCTL4lNJc6fcs4Rmc+DP7vF5VU/gbsbqxAsTm0z2E+DPCqf/R
+        5HpuN8UDevuGDcU3Uf2azsavoyM3AenaSEbTR3Wr6eGTqdJz6B4ntzaI5kS/I8Tr52cJz+C3wMy+WXJ7
+        E86AWPwGCyFuJ6v6EtBz2RPNz170nbyagwzfXz3w0RUBvFt1j5O4EyVABrdV6bvezNWr11a2R9d04ntj
+        E7vbmoWTqXrWKLxRqj2qM9u4ARrPfUO8KTKiOjdctIY61KqbvCTqqKsx7le3dprbcyEBBDxTFCdF9USY
+        JbTCC6G23Z76yu+6RoI1Zog0C/dhBPerOssn/MwVnMGnqxNe446nBT+dHypKdiV1NSAvnqjeMT6J/Dr7
+        CTxRFbm3TlSfgP7G1gbJ3rs61VjXmLeQwok6al6fplWt+D6jN4LntSOqDgfISk6UsOxVkqqP3T+mS6K6
+        MwpPAI74u0Uf5FumSwYnRAVPaOZXIOt49iu0QbJ8+KRX2UIKJ6oW2zGabgofJjHttsLj9CbEbqyR09lz
+        3K7nX/FNVD0shG7QQ/ndJyXiV7G+OZDRZBtBbXWFAU4+SK7+Ma28KZFsAmqDZOTx619ltlggIzzn6WQl
+        Bp+kxNpNX2+ACjQVg4UcqN+RK89pdqafRc3x2XWxT7z+PwujG+jE+4yEI8kmh082HLsUbqubNiAr+kiq
+        RlIdb8ZAlbMtoLG9cCOZmVyq3zX4lrpX+ccXJ/SsjGoKTjJKwrwzKqG7q0RxsOp2I30EJ15FGIVfeZWQ
+        2MqeN0g1ufwZhIymfgZyOUtWiFU9aQLY0z3dxPLnRCbkajRwONOnfifEO8uNtPUpHsnwxOFEjPQOShRs
+        /ARKVGx1V52CpOGrJw4bxAbBumLrudiogA09oyP/CNjCL4ju04lvfjV3UKLO+MS55MtrzrnkYtQYCs7K
+        ch/2iGPr8Np2Ry0s/CMsoi7sAouoC7vAF1H9HbFkyX8ni6hLdiEQdWHhf8ci6sIusIi6sAssoi7sAouo
+        CzvA4fAHgW7crI7nKn8AAAAASUVORK5CYII=
+</value>
+  </data>
+</root>

+ 421 - 0
OTSIncAReportApp/GBCalculate/DINStandardABCDDS.cs

@@ -0,0 +1,421 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using OTSREPORTCLR;
+using System.Collections;
+using OTSSysMgrTools;
+
+namespace OTSIncAReportGB
+{
+    public partial class DINStandardABCDDS : UserControl
+    {
+        #region 全局变量
+        //设置数据表
+        public DataTable m_dt = new DataTable();
+
+        //底层相关,项目操作管理类
+        COTSReportCalculateClr m_COTSReportProjFileMgrClr = null;
+
+        //日志类
+        //public NSLogFunExport.CFunExportClass m_LogFunExport = null;
+
+        //日志文件名
+        const String m_csFileName = "OTSReportAppLog";
+
+        //获取从框架得到的底层计算结果,国标表A
+        List<CGridDataClr> m_list_cgriddataclr_A = null;
+
+
+        //定义整个一组返回List
+        List<CGridDataClr> m_list_ALL = null;
+
+        //接收底层数据
+        public List<CGridDataClr> DataAll;
+
+
+
+        #endregion
+
+
+
+        #region 窗体加载及初始化
+        public DINStandardABCDDS()
+        {
+            InitializeComponent();
+        }
+
+
+        /// <summary>
+        /// 国标报表,构造函数,接收A,B,C,D,DS五种结果,并进行显示
+        /// </summary>
+        /// <param name="in_sec"></param>
+        /// <param name="in_Cotsreportprojfilemgrclr"></param>
+        /// <param name="in_list_CGridDataClrAll"></param>   //all  代表A、B、C、D、DS按顺序得表
+        public string ColumnName;
+        public string RowName;
+        #region 国际化语言
+        Language lan;
+        Hashtable table;
+        #endregion
+        public DINStandardABCDDS(COTSReportCalculateClr in_Cotsreportprojfilemgrclr, List<CGridDataClr> in_list_CGridDataClrAll)
+        {
+
+            DataAll = in_list_CGridDataClrAll;
+
+            //获取报告项目类对象
+            m_COTSReportProjFileMgrClr = in_Cotsreportprojfilemgrclr;
+
+            m_list_cgriddataclr_A = in_list_CGridDataClrAll.GetRange(0, 1);
+
+            m_list_ALL = in_list_CGridDataClrAll;
+
+            InitializeComponent();
+            #region 国际化语言
+            lan = new Language(this);
+            table = lan.GetNameTable(this.Name);
+            #endregion
+        }
+
+        private void DINStandardABCDDS_Load(object sender, EventArgs e)
+        {
+
+            //从底层结果类对象中,分解出数据保存到datatable中
+            m_dt = DINStandardABCD_GetDataTable_Total(m_list_cgriddataclr_A);
+            //创建datatable的列数据,及分栏,及相关行数据
+            BindDataGridView();
+            //设置grid风格
+            SetDataGridViewStyle();
+
+            Invalidate();
+
+        }
+
+        /// <summary>
+        /// 根据传入的数字返回对应的颜色,范围1-17种颜色,挑出来比较谈的颜色为对比效果好看而挑选
+        /// </summary>
+        /// <param name="number"></param>
+        /// <returns></returns>
+        public Color GetColorByNumber(int number)
+        {
+            Color ret_color = new Color();
+            switch (number)
+            {
+                case 1:
+                    ret_color = Color.Azure;
+                    break;
+                case 2:
+                    ret_color = Color.Beige;
+                    break;
+                case 3:
+                    ret_color = Color.PaleGreen;
+                    break;
+                case 13:
+                    ret_color = Color.Cornsilk;
+                    break;
+                case 4:
+                    ret_color = Color.FloralWhite;
+                    break;
+                case 5:
+                    ret_color = Color.Gainsboro;
+                    break;
+                case 6:
+                    ret_color = Color.GhostWhite;
+                    break;
+                case 7:
+                    ret_color = Color.Honeydew;
+                    break;
+                case 8:
+                    ret_color = Color.Ivory;
+                    break;
+                case 9:
+                    ret_color = Color.Lavender;
+                    break;
+                case 10:
+                    ret_color = Color.LavenderBlush;
+                    break;
+                case 11:
+                    ret_color = Color.LightCyan;
+                    break;
+                case 12:
+                    ret_color = Color.MintCream;
+                    break;
+                case 14:
+                    ret_color = Color.PaleTurquoise;
+                    break;
+                case 15:
+                    ret_color = Color.SeaShell;
+                    break;
+                case 16:
+                    ret_color = Color.Snow;
+                    break;
+                case 17:
+                    ret_color = Color.WhiteSmoke;
+                    break;
+
+                default:
+                    ret_color = Color.White;
+                    break;
+            }
+
+            return ret_color;
+        }
+
+        /// <summary>
+        /// 绑定datagridview数据
+        /// </summary>
+        public void BindDataGridView()
+        {
+
+            for (int i = 0; i < m_dt.Columns.Count; i++)
+            {
+                Gview_gz.Columns.Add(m_dt.Columns[i].ToString(), m_dt.Columns[i].ToString());
+            }
+
+
+            //先设置一下头的高度,否则会太矮不好看
+            Gview_gz.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
+            Gview_gz.ColumnHeadersHeight = 40;
+            ////创建Grid的列
+            //this.Gview_gz.MergeColumnNames.Add("夹杂物级别");
+            //this.Gview_gz.AddSpanHeader(1, 9, table["str1"].ToString());
+            //Gview_gz.MergeColumnHeaderBackColor = Color.White;
+            //设置grid默认值的样式,防止图像为空时有红x
+            for (int i = 0; i < Gview_gz.Columns.Count; i++)
+            {
+                Gview_gz.Columns[i].DefaultCellStyle.NullValue = null;
+                Gview_gz.Columns[i].Width = 60;
+            }
+
+
+            //设置数据
+            for (int i = 0; i < m_dt.Rows.Count; i++)
+            {
+                int add_rowindex = Gview_gz.Rows.Add();
+
+
+                for (int k = 0; k < m_dt.Columns.Count; k++)
+                {
+
+                    Gview_gz.Rows[i].Cells[k].Value = m_dt.Rows[i][k].ToString();
+                }
+            }
+            int totle = Gview_gz.Rows.Add();
+            Gview_gz.Rows[totle].Cells[0].Value = table["str2"].ToString();
+            Gview_gz.Rows[totle].Cells[10].Value = "S=" + Gview_gz.Rows[0].Cells[10].Value;
+            double to = Convert.ToDouble(Gview_gz.Rows[1].Cells[11].Value) + Convert.ToDouble(Gview_gz.Rows[2].Cells[11].Value) + Convert.ToDouble(Gview_gz.Rows[3].Cells[11].Value);
+            Gview_gz.Rows[totle].Cells[11].Value = "O=" + to.ToString();
+            int totle1 = Gview_gz.Rows.Add();
+            Gview_gz.Rows[totle1].Cells[10].Value = table["str3"].ToString();
+
+
+            uint area = m_COTSReportProjFileMgrClr.GetSmplMsrResultMgrs()[0].GetSmplMsrResultFile().GetSample().GetMsrResults().GetMeasuredArea();
+            double ts = Convert.ToDouble(Gview_gz.Rows[0].Cells[10].Value);
+            double gg = ((ts + to) * 1000 * 1000 * 1000) / area;
+            Gview_gz.Rows[totle1].Cells[11].Value = gg;
+            //设置颜色
+            int color_count = 1;
+            for (int i = 0; i < m_dt.Columns.Count; i++)
+            {
+                for (int k = 0; k < m_dt.Rows.Count; k++)
+                {
+                    Gview_gz.Rows[k].Cells[i].Style.BackColor = GetColorByNumber(color_count);
+                }
+            }
+        }
+        /// <summary>
+        /// 设置DataGridView样式
+        /// </summary>
+        private void SetDataGridViewStyle()
+        {
+            //用户不能调整标题的高度
+            Gview_gz.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gz.AllowUserToResizeRows = false;
+
+            //改变行的高度;
+            //Gview_gz.RowTemplate.Height = 20;
+
+            //点击选择整行
+            Gview_gz.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gz.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gz.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gz.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gz.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gz.Columns[0].Width = 60;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gz.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gz.Columns[0].Resizable = DataGridViewTriState.False;
+        }
+
+        #endregion
+
+
+
+        #region 获取向导出模块提供的DataTable和GridView对象
+        /// <summary>
+        /// 获取到该模块输出后形成的DataTable,和GridView
+        /// </summary>
+        /// <param name="out_dt"></param>
+        /// <param name="out_dg"></param>
+        public void GetDataTableAndGridView(out DataTable out_dtA, out DataGridView out_dgA)
+        {
+            //从panel中找出前5个datagridview,然后进行输出
+            out_dtA = m_dt;
+            out_dgA = null;
+        }
+
+        #endregion
+
+
+        #region clr部份
+        public DataTable DINStandardABCD_GetDataTable_Total(List<CGridDataClr> in_list_cgriddataclr)
+        {
+
+            //创建一个临时表
+            DataTable ret_dt = new DataTable();
+
+            //判断传入的数据对象是否为空
+            if (in_list_cgriddataclr == null)
+            {
+                string str1 = "传入分解表格数据的CGridDataClr对象为空!";
+                str1 = table["str1"].ToString();
+                //log.Error("(OTSIncAReportGridsFun.DINStandardABCD_GetDataTable_Total)" + str1);
+                return ret_dt;
+            }
+
+            #region 根据返回的结构创建DataTable的结构---------------------------------------------
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+
+
+
+                if (in_list_cgriddataclr.Count > 1)
+                {
+                    //创建DT的列,多个数据源,为每个字段带上索引号
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        string ls_fl_strName = ls_cgridcolumnclr.GetName();
+
+                        //通过获取到的列,创建表的列
+                        ret_dt.Columns.Add(ls_fl_strName + "(" + (i + 1).ToString() + ")");
+                    }
+                }
+                else
+                {
+                    //创建DT的列,单个数据源,不带索引号
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        string ls_fl_strName = ls_cgridcolumnclr.GetName();
+
+                        //通过获取到的列,创建表的列
+                        ret_dt.Columns.Add(ls_fl_strName);
+                    }
+                }
+            }
+            #endregion
+
+            #region 再创建表的行------------------------------------------------------------------
+            //取最大的rowlistcount,要不然,不知道这底层返回的数据居然还有2,2,3这样的行数据
+            int maxrownumber = 0;
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+
+                //创建DT的行
+                if (list_cgridcolumnclrs != null)
+                {
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        if (maxrownumber < ls_cgridcolumnclr.GetRowList().Count())
+                        {
+                            maxrownumber = ls_cgridcolumnclr.GetRowList().Count();
+                        }
+                    }
+                }
+            }
+            for (int k = 0; k < maxrownumber; k++)
+            {
+                DataRow dr = ret_dt.NewRow();
+                ret_dt.Rows.Add(dr);
+            }
+            #endregion
+
+            #region //再次重新分解,先分解列,然后将获取到的各行各列的数据,填充到相应的位置上---
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+                                                                                       //再次重新分解,先分解列,然后将获取到的
+                for (int k = 0; k < list_cgridcolumnclrs.Count(); k++)
+                {
+                    string ls_fl_strName = list_cgridcolumnclrs[k].GetName();
+                    List<CGridRowClr> ls_list_cgridrowclr = new List<CGridRowClr>();
+                    ls_list_cgridrowclr = list_cgridcolumnclrs[k].GetRowList();
+
+                    for (int j = 0; j < ls_list_cgridrowclr.Count(); j++)
+                    {
+                        //先判断该行该单元格的数据类型
+                        string str_value = "";//因为显示只需要对字符串进行操作就可以了,所以将底层获取到的数据,除了颗粒类型外的都转成string
+
+                        switch (ls_list_cgridrowclr[j].GetDataType())
+                        {
+                            case 0:
+                                //string
+                                str_value = ls_list_cgridrowclr[j].GetStringValue();
+                                ret_dt.Rows[j][k + i] = str_value;
+                                break;
+                            case 1:
+                                //该元素含量表没有需要显示的颗粒图像
+                                //ret_dt.Rows[j][k+i*oneresult_columncount] = GetBitmapByParticleList(ls_list_cgridrowclr[k].GetParticle());
+                                break;
+                            case 2:
+                                //int
+                                str_value = ls_list_cgridrowclr[j].GetIntValue().ToString();
+                                ret_dt.Rows[j][k + i] = str_value;
+                                break;
+                            case 3:
+                                //float
+                                str_value = ls_list_cgridrowclr[j].GetDoubleValue().ToString("0.00");
+                                ret_dt.Rows[j][k + i] = str_value;
+                                break;
+                            default:
+                                str_value = "";
+                                ret_dt.Rows[j][k + i] = str_value;
+                                break;
+                        }
+                    }
+                }
+            }
+            #endregion
+
+            return ret_dt;
+        }
+        #endregion
+    }
+}

+ 83 - 0
OTSIncAReportApp/GBCalculate/DINStandardABCDDS.designer.cs

@@ -0,0 +1,83 @@
+namespace OTSIncAReportGB
+{
+    partial class DINStandardABCDDS
+    {
+        /// <summary> 
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region 组件设计器生成的代码
+
+        /// <summary> 
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.Gview_gz = new System.Windows.Forms.DataGridView();
+            this.panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gz)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // panel1
+            // 
+            this.panel1.AutoScroll = true;
+            this.panel1.BackColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.panel1.Controls.Add(this.Gview_gz);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.panel1.Location = new System.Drawing.Point(0, 0);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(1000, 780);
+            this.panel1.TabIndex = 12;
+            // 
+            // Gview_gz
+            // 
+            this.Gview_gz.AllowUserToAddRows = false;
+            this.Gview_gz.AllowUserToDeleteRows = false;
+            this.Gview_gz.AllowUserToResizeRows = false;
+            this.Gview_gz.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gz.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gz.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.Gview_gz.Location = new System.Drawing.Point(0, 0);
+            this.Gview_gz.Name = "Gview_gz";
+            this.Gview_gz.ReadOnly = true;
+            this.Gview_gz.RowHeadersVisible = false;
+            this.Gview_gz.RowHeadersWidth = 40;
+            this.Gview_gz.RowTemplate.Height = 30;
+            this.Gview_gz.Size = new System.Drawing.Size(1000, 780);
+            this.Gview_gz.TabIndex = 13;
+            // 
+            // DINStandardABCDDS
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.panel1);
+            this.Name = "DINStandardABCDDS";
+            this.Size = new System.Drawing.Size(1000, 780);
+            this.Load += new System.EventHandler(this.DINStandardABCDDS_Load);
+            this.panel1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gz)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+        private System.Windows.Forms.Panel panel1;
+        public System.Windows.Forms.DataGridView Gview_gz;
+    }
+}

+ 120 - 0
OTSIncAReportApp/GBCalculate/DINStandardABCDDS.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 66 - 0
OTSIncAReportApp/GBCalculate/MainForm.Designer.cs

@@ -0,0 +1,66 @@
+namespace OTSIncAReportGB
+{
+    partial class MainForm
+    {
+        /// <summary>
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows 窗体设计器生成的代码
+
+        /// <summary>
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.SuspendLayout();
+            // 
+            // panel1
+            // 
+            this.panel1.AllowDrop = true;
+            this.panel1.AutoScroll = true;
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.panel1.Location = new System.Drawing.Point(0, 0);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(1150, 640);
+            this.panel1.TabIndex = 0;
+            // 
+            // MainForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(1150, 640);
+            this.Controls.Add(this.panel1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+            this.Name = "MainForm";
+            this.ShowIcon = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "国标";
+            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
+            this.Load += new System.EventHandler(this.Main_Load);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Panel panel1;
+    }
+}
+

+ 149 - 0
OTSIncAReportApp/GBCalculate/MainForm.cs

@@ -0,0 +1,149 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+using OTSINTERFACE;
+using OTSSysMgrTools;
+
+
+namespace OTSIncAReportGB
+{
+    public partial class MainForm : Form
+    {
+        #region 全局变量
+        public OTSINTERFACE.COTSReportProjFileMgrClr m_ReportProjFileMgr = new OTSINTERFACE.COTSReportProjFileMgrClr();
+        string m_arg1 = "";
+        string m_arg2 = "";
+        #endregion
+
+        public MainForm()
+        {
+            InitializeComponent();
+        }
+
+        public MainForm(string[] args)
+        {
+            InitializeComponent();
+            if (args.Length == 0)
+            {
+                MessageBox.Show("请使用报告程序打开国标程序!");
+                Application.Exit();
+                return;
+            }
+
+            if (args.Length != 2)
+            {
+                string str = "";
+                for (int i = 0; i < args.Length; i++)
+                {
+                    str = str + "参数" + (i + 1).ToString() + ":" + args[i].ToString() + Environment.NewLine;
+                }
+
+                MessageBox.Show("传入的参数数量不正确,应为2个参数:" + Environment.NewLine + str);
+                Application.Exit();
+                return;
+            }
+
+            m_arg1 = args[0].Replace("^", " ");
+            m_arg2 = args[1].Replace("^", " ");
+        }
+
+        private void Main_Load(object sender, EventArgs e)
+        {
+
+            //接收到测量结果路径,然后加载
+
+            //测试相关代码
+            bool bDebug = false;
+            if (bDebug != false)
+            {
+                m_arg1 = "E:\\ResultFile\\test1\\Sample1\\Sample1.rst";
+                m_arg2 = "DIN";
+            }
+
+            if (m_arg1 != "")
+            {
+                m_ReportProjFileMgr.AddASmplMsrResultMgr(m_arg1);
+                m_ReportProjFileMgr.SetSelectedPicture(1);
+            }
+
+            if (m_arg2 == "GB1")
+            {
+                //国标一
+                OTSINTERFACE.CPropParamClr clr_prop = m_ReportProjFileMgr.GetCurrentPropParam();
+                clr_prop.SetDataSourceId(0);//
+                clr_prop.SetType(1);//table
+                clr_prop.SetCalTableType(6);//国标1
+                List<OTSINTERFACE.CGridDataClr> listGriddataclr = m_ReportProjFileMgr.GridDataTransfer();
+
+                ChineseStandardABCDDS m_ChineseStandardABCDDS = new ChineseStandardABCDDS(m_ReportProjFileMgr, listGriddataclr);
+                this.panel1.Controls.Add(m_ChineseStandardABCDDS);
+
+                this.Text = "国标一";
+            }
+            else if (m_arg2 == "GB2")
+            {
+                //国标二
+                OTSINTERFACE.CPropParamClr clr_prop2 = m_ReportProjFileMgr.GetCurrentPropParam();
+                clr_prop2.SetDataSourceId(0);//
+                clr_prop2.SetType(1);//table
+                clr_prop2.SetCalTableType(7);
+                List<OTSINTERFACE.CGridDataClr> listGriddataclr2 = m_ReportProjFileMgr.GridDataTransfer();
+
+                NationalStandardMethodTwo m_NationalStandardMethodTwo = new NationalStandardMethodTwo(m_ReportProjFileMgr, listGriddataclr2);
+                this.panel1.Controls.Add(m_NationalStandardMethodTwo);
+
+                this.Text = "国标二";
+            }
+            else if (m_arg2 == "ASTM")
+            {
+                //美标
+                OTSINTERFACE.CPropParamClr clr_prop3 = m_ReportProjFileMgr.GetCurrentPropParam();
+                clr_prop3.SetDataSourceId(0);//
+                clr_prop3.SetType(1);//table
+                clr_prop3.SetCalTableType(8);
+                List<OTSINTERFACE.CGridDataClr> listGriddataclr3 = m_ReportProjFileMgr.GridDataTransfer();
+
+                ASTMStandardABCDDS m_ASTMStandardABCDDS = new ASTMStandardABCDDS(m_ReportProjFileMgr, listGriddataclr3);
+                this.panel1.Controls.Add(m_ASTMStandardABCDDS);
+
+                this.Text = "美标";
+            }
+
+            else if (m_arg2 == "DIN")
+            {
+                //德标
+                OTSINTERFACE.CPropParamClr clr_prop4 = m_ReportProjFileMgr.GetCurrentPropParam();
+                clr_prop4.SetDataSourceId(0);//
+                clr_prop4.SetType(1);//table
+                clr_prop4.SetCalTableType(9);
+                List<OTSINTERFACE.CGridDataClr> listGriddataclr4 = m_ReportProjFileMgr.GridDataTransfer();
+
+                DINStandardABCDDS m_DINStandardABCDDS = new DINStandardABCDDS(m_ReportProjFileMgr, listGriddataclr4);
+                this.panel1.Controls.Add(m_DINStandardABCDDS);
+
+                this.Text = "德标";
+            }
+
+
+
+
+
+
+
+
+
+
+
+        }
+
+
+
+    }
+}

+ 120 - 0
OTSIncAReportApp/GBCalculate/MainForm.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 989 - 0
OTSIncAReportApp/GBCalculate/NationalStandardMethodTwo.cs

@@ -0,0 +1,989 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+using OTSREPORTCLR;
+using System.Collections;
+using OTSSysMgrTools;
+
+namespace OTSIncAReportGB
+{
+    public partial class NationalStandardMethodTwo : UserControl
+    {
+        #region 全局变量
+        //设置数据表
+        public DataTable m_dt_A = new DataTable();
+        public DataTable m_dt_B = new DataTable();
+        public DataTable m_dt_C = new DataTable();
+        public DataTable m_dt_D = new DataTable();
+        public DataTable m_dt_sulfide = new DataTable();
+        public DataTable m_dt_DS = new DataTable();
+
+        //底层相关,项目操作管理类
+        COTSReportCalculateClr m_COTSReportProjFileMgrClr = null;
+
+        //日志类
+        //public NSLogFunExport.CFunExportClass m_LogFunExport = null;
+
+        //日志文件名
+        const String m_csFileName = "OTSReportAppLog";
+
+        //获取从框架得到的底层计算结果,国标表A
+        List<CGridDataClr> m_list_cgriddataclr_A = null;
+
+        //获取从框架得到的底层计算结果,国标表B
+        List<CGridDataClr> m_list_cgriddataclr_B = null;
+
+        //获取从框架得到的底层计算结果,国标表C
+        List<CGridDataClr> m_list_cgriddataclr_C = null;
+
+        //获取从框架得到的底层计算结果,国标表D
+        List<CGridDataClr> m_list_cgriddataclr_D = null;
+
+        //获取从框架得到的底层计算结果,国标表D硫化物表
+        List<CGridDataClr> m_list_cgriddataclr_sulfide = null;
+
+        //获取从框架得到的底层计算结果,国标表DS
+        List<CGridDataClr> m_list_cgriddataclr_DS = null;
+
+        //定义一个组List
+        List<CGridDataClr> m_list_ALLTwo = null;
+
+        //接收底层数据
+        public List<CGridDataClr> DataAll;
+        //一个数据源包含几个列数的记录数
+        private int m_oneresult_columnscount_A = 3;
+        private int m_oneresult_columnscount_B = 3;
+        private int m_oneresult_columnscount_C = 3;
+        private int m_oneresult_columnscount_D = 3;
+        private int m_oneresult_columnscount_sulfide = 3;
+        private int m_oneresult_columnscount_DS = 3;
+
+        #endregion
+
+        #region 自定义方法
+
+        private void SetDataGridViewStyleAll()
+        {
+            //用户不能调整标题的高度
+            Gview_gzA.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzA.AllowUserToResizeRows = false;
+
+            //改变行的高度;
+            //Gview_gz.RowTemplate.Height = 20;
+
+            //点击选择整行
+            Gview_gzA.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzA.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzA.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzA.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzA.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,B类表
+        /// </summary>
+        private void SetDataGridViewStyleB()
+        {
+            //用户不能调整标题的高度
+            Gview_gzB.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzB.AllowUserToResizeRows = false;
+
+            //改变行的高度;
+            //Gview_gz.RowTemplate.Height = 20;
+
+            //点击选择整行
+            Gview_gzB.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzB.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzB.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzB.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzB.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzB.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzB.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzB.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,C类表
+        /// </summary>
+        private void SetDataGridViewStyleC()
+        {
+            //用户不能调整标题的高度
+            Gview_gzC.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzC.AllowUserToResizeRows = false;
+
+            //改变行的高度;
+            //Gview_gz.RowTemplate.Height = 20;
+
+            //点击选择整行
+            Gview_gzC.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzC.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzC.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzC.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzC.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzC.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzC.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzC.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,D类表
+        /// </summary>
+        private void SetDataGridViewStyleD()
+        {
+            //用户不能调整标题的高度
+            Gview_gzD.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzD.AllowUserToResizeRows = false;
+
+            //改变行的高度;
+            //Gview_gz.RowTemplate.Height = 20;
+
+            //点击选择整行
+            Gview_gzD.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzD.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzD.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzD.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzD.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzD.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzD.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzD.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+        /// <summary>
+        /// 设置DataGridView样式,DS类表
+        /// </summary>
+        private void SetDataGridViewStyleDS()
+        {
+            //用户不能调整标题的高度
+            Gview_gzDS.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            Gview_gzDS.AllowUserToResizeRows = false;
+
+            //改变行的高度;
+            //Gview_gz.RowTemplate.Height = 20;
+
+            //点击选择整行
+            Gview_gzDS.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            Gview_gzDS.DefaultCellStyle = dataGridViewCellStyle1;
+            Gview_gzDS.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            Gview_gzDS.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            Gview_gzDS.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            Gview_gzDS.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
+
+            //设置序号列不排序
+            Gview_gzDS.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            Gview_gzDS.Columns[0].Resizable = DataGridViewTriState.False;
+
+        }
+
+
+        #endregion
+
+        #region 窗体加载及初始化
+        public NationalStandardMethodTwo()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// 国标报表,构造函数,接收A,B,C,D,DS五种结果,并进行显示
+        /// </summary>
+        /// <param name="in_sec"></param>
+        /// <param name="in_Cotsreportprojfilemgrclr"></param>       
+        /// <param name="in_list_CGridDataClrAll"></param>   //all  代表A、B、C、D、DS按顺序得表
+        public string ColumnName;
+        public string RowName;
+        #region 国际化语言
+        Language lan;
+        Hashtable table;
+        #endregion
+        public NationalStandardMethodTwo(COTSReportCalculateClr in_Cotsreportprojfilemgrclr, List<CGridDataClr> in_list_CGridDataClrAll)
+        {
+
+            DataAll = in_list_CGridDataClrAll;
+
+            //获取报告项目类对象
+            m_COTSReportProjFileMgrClr = in_Cotsreportprojfilemgrclr;
+
+            m_list_cgriddataclr_A = in_list_CGridDataClrAll.GetRange(0, 1);
+            m_list_cgriddataclr_B = in_list_CGridDataClrAll.GetRange(1, 1);
+            m_list_cgriddataclr_C = in_list_CGridDataClrAll.GetRange(2, 1);
+            m_list_cgriddataclr_D = in_list_CGridDataClrAll.GetRange(3, 1);
+            m_list_cgriddataclr_sulfide = in_list_CGridDataClrAll.GetRange(4, 1);
+            m_list_cgriddataclr_DS = in_list_CGridDataClrAll.GetRange(5, 1);
+
+            m_list_ALLTwo = in_list_CGridDataClrAll;
+
+
+            InitializeComponent();
+            #region 国际化语言
+            lan = new Language(this);
+            table = lan.GetNameTable(this.Name);
+            #endregion
+        }
+
+        private void NationalStandardMethodTwo_Load(object sender, EventArgs e)
+        {
+
+            //从底层结果类对象中,分解出数据保存到datatable中
+
+            if (m_list_ALLTwo.Count > 7)
+            {
+                int SouseData = (m_COTSReportProjFileMgrClr.GetSmplMsrResultMgrs().Count) * 7;
+                for (int g = 0; g < m_COTSReportProjFileMgrClr.GetSmplMsrResultMgrs().Count; g++)
+                {
+                    for (int i = 0; i < 6; i++)
+                    {
+                        DataTable dt = new DataTable();
+                        DataColumn cc = new DataColumn();
+                        int q = g * 7 + i;
+                        dt = ChineseStandardABCD_GetDataTable_Total(DataAll.GetRange(q, 1), out m_oneresult_columnscount_A);
+                        DataGridView aa = new DataGridView();
+                        int start = 68;
+                        int end = 0;
+                        end = 150 * q;
+                        aa.Location = new Point(start, end);
+                        aa.Width = panel1.Width;
+                        aa.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+                        aa.BackgroundColor = Color.White;
+                        panel1.Controls.Add(aa);
+                        aa.DataSource = dt;
+                        aa.Name = i.ToString();
+
+                        Label bb = new Label();
+                        int startLabel = 0;
+                        int endLabel = 0;
+                        endLabel = 150 * q;
+                        bb.Location = new Point(startLabel, endLabel);
+                        bb.Width = 75;
+                        for (int t = 0; t < SouseData; t++)
+                        {
+                            if (i == t * 6)
+                            {
+                                bb.Text = table["label1"].ToString();
+                                break;
+                            }
+                            if (i == t * 6 + 1)
+                            {
+                                bb.Text = table["label2"].ToString();
+                            }
+                            if (i == t * 6 + 2)
+                            {
+                                bb.Text = table["label3"].ToString();
+                            }
+                            if (i == t * 6 + 3)
+                            {
+                                bb.Text = table["label4"].ToString();
+                            }
+                            if (i == t * 6 + 4)
+                            {
+                                bb.Text = table["label5"].ToString();
+                            }
+                            if (i == t * 6 + 5)
+                            {
+                                bb.Text = table["label6"].ToString();
+                            }
+
+                        }
+                        bb.Font = new Font(bb.Font.Name, 12, FontStyle.Bold | FontStyle.Underline);
+                        panel1.Controls.Add(bb);
+
+                    }
+                }
+
+
+                Gview_gzA.Visible = false;
+                Gview_gzB.Visible = false;
+                Gview_gzC.Visible = false;
+                Gview_gzD.Visible = false;
+                sulfide.Visible = false;
+                Gview_gzDS.Visible = false;
+                label1.Visible = false;
+                label2.Visible = false;
+                label3.Visible = false;
+                label4.Visible = false;
+                label5.Visible = false;
+                label6.Visible = false;
+                Invalidate();
+            }
+            else
+            {
+                m_dt_A = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_A, out m_oneresult_columnscount_A);
+                m_dt_B = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_B, out m_oneresult_columnscount_B);
+                m_dt_C = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_C, out m_oneresult_columnscount_C);
+                m_dt_D = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_D, out m_oneresult_columnscount_D);
+                m_dt_sulfide = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_sulfide, out m_oneresult_columnscount_sulfide);
+                m_dt_DS = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_DS, out m_oneresult_columnscount_DS);
+                Gview_gzA.DataSource = m_dt_A;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzA.Columns[i].Width = 68;
+                }
+                Gview_gzB.DataSource = m_dt_B;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzB.Columns[i].Width = 68;
+                }
+                Gview_gzC.DataSource = m_dt_C;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzC.Columns[i].Width = 68;
+                }
+                Gview_gzD.DataSource = m_dt_D;
+                for (int i = 0; i < 13; i++)
+                {
+                    Gview_gzD.Columns[i].Width = 68;
+                }
+                sulfide.DataSource = m_dt_sulfide;
+                for (int i = 0; i < 13; i++)
+                {
+                    sulfide.Columns[i].Width = 68;
+                }
+                Gview_gzDS.DataSource = m_dt_DS;
+
+                Gview_gzA.Width = panel1.Width;
+                Gview_gzB.Width = panel1.Width;
+                Gview_gzC.Width = panel1.Width;
+                Gview_gzD.Width = panel1.Width;
+                sulfide.Width = panel1.Width;
+                Gview_gzDS.Width = panel1.Width;
+
+            }
+
+            Invalidate();
+
+        }
+        #endregion
+
+        #region 相关事件
+        /// <summary>
+        /// 复制选择区域,A
+        /// </summary>
+        public void CopySelected_A()
+        {
+            //复制选择区域
+            object oo = Gview_gzA.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,B
+        /// </summary>
+        public void CopySelected_B()
+        {
+            //复制选择区域
+            object oo = Gview_gzB.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,C
+        /// </summary>
+        public void CopySelected_C()
+        {
+            //复制选择区域
+            object oo = Gview_gzC.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,D
+        /// </summary>
+        public void CopySelected_D()
+        {
+            //复制选择区域
+            object oo = Gview_gzD.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制选择区域,DS
+        /// </summary>
+        public void CopySelected_DS()
+        {
+            //复制选择区域
+            object oo = Gview_gzDS.GetClipboardContent();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,A
+        /// </summary>
+        public void CopyAll_A()
+        {
+            Gview_gzA.SelectAll();
+            Clipboard.SetDataObject(Gview_gzA.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,B
+        /// </summary>
+        public void CopyAll_B()
+        {
+            Gview_gzB.SelectAll();
+            Clipboard.SetDataObject(Gview_gzB.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,C
+        /// </summary>
+        public void CopyAll_C()
+        {
+            Gview_gzC.SelectAll();
+            Clipboard.SetDataObject(Gview_gzC.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,D
+        /// </summary>
+        public void CopyAll_D()
+        {
+            Gview_gzD.SelectAll();
+            Clipboard.SetDataObject(Gview_gzD.GetClipboardContent());
+        }
+
+        /// <summary>
+        /// 复制所有,DS
+        /// </summary>
+        public void CopyAll_DS()
+        {
+            Gview_gzDS.SelectAll();
+            Clipboard.SetDataObject(Gview_gzDS.GetClipboardContent());
+        }
+
+        private void Gview_gzA_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
+        {
+            //排序中
+            if (this.Gview_gzA.Rows[e.RowIndex1].Tag != null && this.Gview_gzA.Rows[e.RowIndex1].Tag.ToString() == "统计行")
+            {
+                //ROW1>ROW2  
+                e.SortResult = 1;
+                if (this.Gview_gzA.SortOrder == SortOrder.Descending)
+                    e.SortResult = -1;
+                e.Handled = true;
+                return;
+            }
+
+            if (this.Gview_gzA.Rows[e.RowIndex2].Tag != null && this.Gview_gzA.Rows[e.RowIndex2].Tag.ToString() == "统计行")
+            {
+                //ROW1<ROW2  
+                e.SortResult = -1;
+                if (this.Gview_gzA.SortOrder == SortOrder.Descending)
+                    e.SortResult = 1;
+                e.Handled = true;
+                return;
+            }
+        }
+
+        private void Gview_gzA_Sorted(object sender, EventArgs e)
+        {
+            //排序完成,重新设置序号
+            for (int i = 0; i < Gview_gzA.Rows.Count; i++)
+            {
+                if (Gview_gzA.Rows[i].Tag != null && this.Gview_gzA.Rows[i].Tag.ToString() == "统计行")
+                { }
+                else
+                {
+                    Gview_gzA.Rows[i].Cells[0].Value = i.ToString();
+                }
+            }
+        }
+
+        private void Gview_gzB_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
+        {
+            //排序中
+            if (this.Gview_gzB.Rows[e.RowIndex1].Tag != null && this.Gview_gzB.Rows[e.RowIndex1].Tag.ToString() == "统计行")
+            {
+                //ROW1>ROW2  
+                e.SortResult = 1;
+                if (this.Gview_gzB.SortOrder == SortOrder.Descending)
+                    e.SortResult = -1;
+                e.Handled = true;
+                return;
+            }
+
+            if (this.Gview_gzB.Rows[e.RowIndex2].Tag != null && this.Gview_gzB.Rows[e.RowIndex2].Tag.ToString() == "统计行")
+            {
+                //ROW1<ROW2  
+                e.SortResult = -1;
+                if (this.Gview_gzB.SortOrder == SortOrder.Descending)
+                    e.SortResult = 1;
+                e.Handled = true;
+                return;
+            }
+        }
+
+        private void Gview_gzB_Sorted(object sender, EventArgs e)
+        {
+            //排序完成,重新设置序号
+            for (int i = 0; i < Gview_gzB.Rows.Count; i++)
+            {
+                if (Gview_gzB.Rows[i].Tag != null && this.Gview_gzB.Rows[i].Tag.ToString() == "统计行")
+                { }
+                else
+                {
+                    Gview_gzB.Rows[i].Cells[0].Value = i.ToString();
+                }
+            }
+        }
+
+        private void Gview_gzC_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
+        {
+            //排序中
+            if (this.Gview_gzC.Rows[e.RowIndex1].Tag != null && this.Gview_gzC.Rows[e.RowIndex1].Tag.ToString() == "统计行")
+            {
+                //ROW1>ROW2  
+                e.SortResult = 1;
+                if (this.Gview_gzC.SortOrder == SortOrder.Descending)
+                    e.SortResult = -1;
+                e.Handled = true;
+                return;
+            }
+
+            if (this.Gview_gzC.Rows[e.RowIndex2].Tag != null && this.Gview_gzC.Rows[e.RowIndex2].Tag.ToString() == "统计行")
+            {
+                //ROW1<ROW2  
+                e.SortResult = -1;
+                if (this.Gview_gzC.SortOrder == SortOrder.Descending)
+                    e.SortResult = 1;
+                e.Handled = true;
+                return;
+            }
+        }
+
+        private void Gview_gzC_Sorted(object sender, EventArgs e)
+        {
+            //排序完成,重新设置序号
+            for (int i = 0; i < Gview_gzC.Rows.Count; i++)
+            {
+                if (Gview_gzC.Rows[i].Tag != null && this.Gview_gzC.Rows[i].Tag.ToString() == "统计行")
+                { }
+                else
+                {
+                    Gview_gzC.Rows[i].Cells[0].Value = i.ToString();
+                }
+            }
+        }
+
+        private void Gview_gzD_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
+        {
+            //排序中
+            if (this.Gview_gzD.Rows[e.RowIndex1].Tag != null && this.Gview_gzD.Rows[e.RowIndex1].Tag.ToString() == "统计行")
+            {
+                //ROW1>ROW2  
+                e.SortResult = 1;
+                if (this.Gview_gzD.SortOrder == SortOrder.Descending)
+                    e.SortResult = -1;
+                e.Handled = true;
+                return;
+            }
+
+            if (this.Gview_gzD.Rows[e.RowIndex2].Tag != null && this.Gview_gzD.Rows[e.RowIndex2].Tag.ToString() == "统计行")
+            {
+                //ROW1<ROW2  
+                e.SortResult = -1;
+                if (this.Gview_gzD.SortOrder == SortOrder.Descending)
+                    e.SortResult = 1;
+                e.Handled = true;
+                return;
+            }
+        }
+
+        private void Gview_gzD_Sorted(object sender, EventArgs e)
+        {
+            //排序完成,重新设置序号
+            for (int i = 0; i < Gview_gzD.Rows.Count; i++)
+            {
+                if (Gview_gzD.Rows[i].Tag != null && this.Gview_gzD.Rows[i].Tag.ToString() == "统计行")
+                { }
+                else
+                {
+                    Gview_gzD.Rows[i].Cells[0].Value = i.ToString();
+                }
+            }
+        }
+
+        private void Gview_gzDS_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
+        {
+            //排序中
+            if (this.Gview_gzDS.Rows[e.RowIndex1].Tag != null && this.Gview_gzDS.Rows[e.RowIndex1].Tag.ToString() == "统计行")
+            {
+                //ROW1>ROW2  
+                e.SortResult = 1;
+                if (this.Gview_gzDS.SortOrder == SortOrder.Descending)
+                    e.SortResult = -1;
+                e.Handled = true;
+                return;
+            }
+
+            if (this.Gview_gzDS.Rows[e.RowIndex2].Tag != null && this.Gview_gzDS.Rows[e.RowIndex2].Tag.ToString() == "统计行")
+            {
+                //ROW1<ROW2  
+                e.SortResult = -1;
+                if (this.Gview_gzDS.SortOrder == SortOrder.Descending)
+                    e.SortResult = 1;
+                e.Handled = true;
+                return;
+            }
+        }
+
+        private void Gview_gzDS_Sorted(object sender, EventArgs e)
+        {
+            //排序完成,重新设置序号
+            for (int i = 0; i < Gview_gzDS.Rows.Count; i++)
+            {
+                if (Gview_gzDS.Rows[i].Tag != null && this.Gview_gzDS.Rows[i].Tag.ToString() == "统计行")
+                { }
+                else
+                {
+                    Gview_gzDS.Rows[i].Cells[0].Value = i.ToString();
+                }
+            }
+        }
+
+        private void ToolStripMenuItem1_Click(object sender, EventArgs e)
+        {
+            //A,复制整个表
+            CopyAll_A();
+        }
+
+        private void ToolStripMenuItem2_Click(object sender, EventArgs e)
+        {
+            //A,复制选择区域
+            CopySelected_A();
+        }
+
+        private void toolStripMenuItem4_Click(object sender, EventArgs e)
+        {
+            //B,复制整个表
+            CopyAll_B();
+        }
+
+        private void toolStripMenuItem5_Click(object sender, EventArgs e)
+        {
+            //B,复制选择区域
+            CopySelected_B();
+        }
+
+        private void toolStripMenuItem7_Click(object sender, EventArgs e)
+        {
+            //C,复制整个表
+            CopyAll_C();
+        }
+
+        private void toolStripMenuItem8_Click(object sender, EventArgs e)
+        {
+            //C,复制选择区域
+            CopySelected_C();
+        }
+
+        private void toolStripMenuItem10_Click(object sender, EventArgs e)
+        {
+            //D,复制整个表
+            CopyAll_D();
+        }
+
+        private void toolStripMenuItem11_Click(object sender, EventArgs e)
+        {
+            //D,复制选择区域
+            CopySelected_D();
+        }
+
+        private void toolStripMenuItem13_Click(object sender, EventArgs e)
+        {
+            //DS,复制整个表
+            CopyAll_DS();
+        }
+
+        private void toolStripMenuItem14_Click(object sender, EventArgs e)
+        {
+            //DS,复制选择区域
+            CopySelected_DS();
+        }
+        #endregion
+
+        #region 获取向导出模块提供的DataTable和GridView对象
+        /// <summary>
+        /// 获取到该模块输出后形成的DataTable,和GridView
+        /// </summary>
+        /// <param name="out_dt"></param>
+        /// <param name="out_dg"></param>
+        public void GetDataTableAndGridView(out DataTable out_dtA, out DataTable out_dtB, out DataTable out_dtC, out DataTable out_dtD, out DataTable out_dt_sulfide, out DataTable out_dtDS,
+        out DataGridView out_dgA, out DataGridView out_dgB, out DataGridView out_dgC, out DataGridView out_dgD, out DataGridView out_dgsulfide, out DataGridView out_dgDS)
+        {
+
+            //从panel中找出前5个datagridview,然后进行输出
+            foreach (Control ctl in this.panel1.Controls)
+            {
+                if (ctl.Name == "0")
+                {
+                    this.Gview_gzA = (DataGridView)ctl;
+                }
+                if (ctl.Name == "1")
+                {
+                    this.Gview_gzB = (DataGridView)ctl;
+                }
+                if (ctl.Name == "2")
+                {
+                    this.Gview_gzC = (DataGridView)ctl;
+                }
+                if (ctl.Name == "3")
+                {
+                    this.Gview_gzD = (DataGridView)ctl;
+                }
+                if (ctl.Name == "4")
+                {
+                    this.sulfide = (DataGridView)ctl;
+                }
+                if (ctl.Name == "5")
+                {
+                    this.Gview_gzDS = (DataGridView)ctl;
+                }
+            }
+
+            out_dtA = m_dt_A;
+            out_dgA = this.Gview_gzA;
+
+            out_dtB = m_dt_B;
+            out_dgB = this.Gview_gzB;
+
+            out_dtC = m_dt_C;
+            out_dgC = this.Gview_gzC;
+
+            out_dtD = m_dt_D;
+            out_dgD = this.Gview_gzD;
+
+            out_dt_sulfide = m_dt_sulfide;
+            out_dgsulfide = this.sulfide;
+
+            out_dtDS = m_dt_DS;
+            out_dgDS = this.Gview_gzDS;
+        }
+        #endregion
+
+
+
+        #region clr加载数据部分
+        public DataTable ChineseStandardABCD_GetDataTable_Total(List<CGridDataClr> in_list_cgriddataclr, out int oneresult_columncount)
+        {
+            oneresult_columncount = 1;//一个数据源的跨度,计算出一个数据源包含几个列
+            //创建一个临时表
+            DataTable ret_dt = new DataTable();
+
+            //判断传入的数据对象是否为空
+            if (in_list_cgriddataclr == null)
+            {
+                string str1 = "传入分解表格数据的CGridDataClr对象为空!";
+                str1 = table["str1"].ToString();
+                //log.Error("(OTSIncAReportGridsFun.ChineseStandardABCD_GetDataTable_Total)" + str1);
+                return ret_dt;
+            }
+
+            #region 根据返回的结构创建DataTable的结构---------------------------------------------
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+
+                //单个数据源包含几个列的跨度
+                if (oneresult_columncount < list_cgridcolumnclrs.Count())
+                    oneresult_columncount = list_cgridcolumnclrs.Count();
+
+                if (in_list_cgriddataclr.Count > 1)
+                {
+                    //创建DT的列,多个数据源,为每个字段带上索引号
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        string ls_fl_strName = ls_cgridcolumnclr.GetName();
+
+                        //通过获取到的列,创建表的列
+                        ret_dt.Columns.Add(ls_fl_strName + "(" + (i + 1).ToString() + ")");
+                    }
+                }
+                else
+                {
+                    //创建DT的列,单个数据源,不带索引号
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        string ls_fl_strName = ls_cgridcolumnclr.GetName();
+
+                        //通过获取到的列,创建表的列
+                        ret_dt.Columns.Add(ls_fl_strName);
+                    }
+                }
+            }
+            #endregion
+
+            #region 再创建表的行------------------------------------------------------------------
+            //取最大的rowlistcount,要不然,不知道这底层返回的数据居然还有2,2,3这样的行数据
+            int maxrownumber = 0;
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+
+                //创建DT的行
+                if (list_cgridcolumnclrs != null)
+                {
+                    foreach (CGridColumnClr ls_cgridcolumnclr in list_cgridcolumnclrs)
+                    {
+                        if (maxrownumber < ls_cgridcolumnclr.GetRowList().Count())
+                        {
+                            maxrownumber = ls_cgridcolumnclr.GetRowList().Count();
+                        }
+                    }
+                }
+            }
+            for (int k = 0; k < maxrownumber; k++)
+            {
+                DataRow dr = ret_dt.NewRow();
+                ret_dt.Rows.Add(dr);
+            }
+            #endregion
+
+            #region //再次重新分解,先分解列,然后将获取到的各行各列的数据,填充到相应的位置上---
+            for (int i = 0; i < in_list_cgriddataclr.Count(); i++)
+            {
+                //分解结果内容
+                List<CGridColumnClr> list_cgridcolumnclrs = new List<CGridColumnClr>();
+                list_cgridcolumnclrs = in_list_cgriddataclr[i].GetGridColumnList();    //获取各列
+                                                                                       //再次重新分解,先分解列,然后将获取到的
+                for (int k = 0; k < list_cgridcolumnclrs.Count(); k++)
+                {
+                    string ls_fl_strName = list_cgridcolumnclrs[k].GetName();
+                    List<CGridRowClr> ls_list_cgridrowclr = new List<CGridRowClr>();
+                    ls_list_cgridrowclr = list_cgridcolumnclrs[k].GetRowList();
+
+                    for (int j = 0; j < ls_list_cgridrowclr.Count(); j++)
+                    {
+                        //先判断该行该单元格的数据类型
+                        string str_value = "";//因为显示只需要对字符串进行操作就可以了,所以将底层获取到的数据,除了颗粒类型外的都转成string
+
+                        switch (ls_list_cgridrowclr[j].GetDataType())
+                        {
+                            case 0:
+                                //string
+                                str_value = ls_list_cgridrowclr[j].GetStringValue();
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                            case 1:
+                                //该元素含量表没有需要显示的颗粒图像
+                                //ret_dt.Rows[j][k+i*oneresult_columncount] = GetBitmapByParticleList(ls_list_cgridrowclr[k].GetParticle());
+                                break;
+                            case 2:
+                                //int
+                                str_value = ls_list_cgridrowclr[j].GetIntValue().ToString();
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                            case 3:
+                                //float
+                                str_value = ls_list_cgridrowclr[j].GetDoubleValue().ToString("0.00");
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                            default:
+                                str_value = "";
+                                ret_dt.Rows[j][k + i * oneresult_columncount] = str_value;
+                                break;
+                        }
+                    }
+                }
+            }
+            #endregion
+
+            return ret_dt;
+        }
+        #endregion
+
+
+
+    }
+}
+
+
+
+
+
+

+ 247 - 0
OTSIncAReportApp/GBCalculate/NationalStandardMethodTwo.designer.cs

@@ -0,0 +1,247 @@
+namespace OTSIncAReportGB
+{
+    partial class NationalStandardMethodTwo
+    {
+        /// <summary> 
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region 组件设计器生成的代码
+
+        /// <summary> 
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NationalStandardMethodTwo));
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.Gview_gzDS = new System.Windows.Forms.DataGridView();
+            this.sulfide = new System.Windows.Forms.DataGridView();
+            this.label6 = new System.Windows.Forms.Label();
+            this.label5 = new System.Windows.Forms.Label();
+            this.Gview_gzD = new System.Windows.Forms.DataGridView();
+            this.label4 = new System.Windows.Forms.Label();
+            this.Gview_gzC = new System.Windows.Forms.DataGridView();
+            this.label3 = new System.Windows.Forms.Label();
+            this.Gview_gzB = new System.Windows.Forms.DataGridView();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label1 = new System.Windows.Forms.Label();
+            this.Gview_gzA = new System.Windows.Forms.DataGridView();
+            this.pictureBox1 = new System.Windows.Forms.PictureBox();
+            this.panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzDS)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.sulfide)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzD)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzC)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzB)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzA)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // panel1
+            // 
+            this.panel1.AutoScroll = true;
+            this.panel1.BackColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.panel1.Controls.Add(this.pictureBox1);
+            this.panel1.Controls.Add(this.Gview_gzDS);
+            this.panel1.Controls.Add(this.sulfide);
+            this.panel1.Controls.Add(this.label6);
+            this.panel1.Controls.Add(this.label5);
+            this.panel1.Controls.Add(this.Gview_gzD);
+            this.panel1.Controls.Add(this.label4);
+            this.panel1.Controls.Add(this.Gview_gzC);
+            this.panel1.Controls.Add(this.label3);
+            this.panel1.Controls.Add(this.Gview_gzB);
+            this.panel1.Controls.Add(this.label2);
+            this.panel1.Controls.Add(this.label1);
+            this.panel1.Controls.Add(this.Gview_gzA);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.panel1.Location = new System.Drawing.Point(0, 0);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(1009, 946);
+            this.panel1.TabIndex = 0;
+            // 
+            // Gview_gzDS
+            // 
+            this.Gview_gzDS.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzDS.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzDS.Location = new System.Drawing.Point(88, 801);
+            this.Gview_gzDS.Name = "Gview_gzDS";
+            this.Gview_gzDS.RowTemplate.Height = 23;
+            this.Gview_gzDS.Size = new System.Drawing.Size(918, 137);
+            this.Gview_gzDS.TabIndex = 11;
+            // 
+            // sulfide
+            // 
+            this.sulfide.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.sulfide.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.sulfide.Location = new System.Drawing.Point(88, 646);
+            this.sulfide.Name = "sulfide";
+            this.sulfide.RowTemplate.Height = 23;
+            this.sulfide.Size = new System.Drawing.Size(918, 137);
+            this.sulfide.TabIndex = 10;
+            // 
+            // label6
+            // 
+            this.label6.AutoSize = true;
+            this.label6.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label6.Location = new System.Drawing.Point(3, 801);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(47, 19);
+            this.label6.TabIndex = 9;
+            this.label6.Text = "DS类";
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label5.Location = new System.Drawing.Point(3, 646);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(88, 19);
+            this.label5.TabIndex = 8;
+            this.label5.Text = "D硫化物类";
+            // 
+            // Gview_gzD
+            // 
+            this.Gview_gzD.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzD.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzD.Location = new System.Drawing.Point(88, 491);
+            this.Gview_gzD.Name = "Gview_gzD";
+            this.Gview_gzD.RowTemplate.Height = 23;
+            this.Gview_gzD.Size = new System.Drawing.Size(918, 137);
+            this.Gview_gzD.TabIndex = 7;
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label4.Location = new System.Drawing.Point(3, 491);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(37, 19);
+            this.label4.TabIndex = 6;
+            this.label4.Text = "D类";
+            // 
+            // Gview_gzC
+            // 
+            this.Gview_gzC.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzC.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzC.Location = new System.Drawing.Point(88, 336);
+            this.Gview_gzC.Name = "Gview_gzC";
+            this.Gview_gzC.RowTemplate.Height = 23;
+            this.Gview_gzC.Size = new System.Drawing.Size(918, 137);
+            this.Gview_gzC.TabIndex = 5;
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label3.Location = new System.Drawing.Point(3, 336);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(36, 19);
+            this.label3.TabIndex = 4;
+            this.label3.Text = "C类";
+            // 
+            // Gview_gzB
+            // 
+            this.Gview_gzB.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzB.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzB.Location = new System.Drawing.Point(88, 181);
+            this.Gview_gzB.Name = "Gview_gzB";
+            this.Gview_gzB.RowTemplate.Height = 23;
+            this.Gview_gzB.Size = new System.Drawing.Size(918, 137);
+            this.Gview_gzB.TabIndex = 3;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label2.Location = new System.Drawing.Point(3, 181);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(36, 19);
+            this.label2.TabIndex = 2;
+            this.label2.Text = "B类";
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Font = new System.Drawing.Font("Bahnschrift", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label1.Location = new System.Drawing.Point(3, 26);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(36, 19);
+            this.label1.TabIndex = 1;
+            this.label1.Text = "A类";
+            // 
+            // Gview_gzA
+            // 
+            this.Gview_gzA.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.Gview_gzA.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.Gview_gzA.Location = new System.Drawing.Point(88, 26);
+            this.Gview_gzA.Name = "Gview_gzA";
+            this.Gview_gzA.RowTemplate.Height = 23;
+            this.Gview_gzA.Size = new System.Drawing.Size(918, 137);
+            this.Gview_gzA.TabIndex = 0;
+            // 
+            // pictureBox1
+            // 
+            this.pictureBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage")));
+            this.pictureBox1.Location = new System.Drawing.Point(1207, 945);
+            this.pictureBox1.Name = "pictureBox1";
+            this.pictureBox1.Size = new System.Drawing.Size(168, 31);
+            this.pictureBox1.TabIndex = 12;
+            this.pictureBox1.TabStop = false;
+            // 
+            // NationalStandardMethodTwo
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.AutoScroll = true;
+            this.Controls.Add(this.panel1);
+            this.Name = "NationalStandardMethodTwo";
+            this.Size = new System.Drawing.Size(1009, 946);
+            this.Load += new System.EventHandler(this.NationalStandardMethodTwo_Load);
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzDS)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.sulfide)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzD)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzC)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzB)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Gview_gzA)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.DataGridView Gview_gzA;
+        private System.Windows.Forms.DataGridView Gview_gzC;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.DataGridView Gview_gzB;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.DataGridView Gview_gzD;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.DataGridView sulfide;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.DataGridView Gview_gzDS;
+        private System.Windows.Forms.PictureBox pictureBox1;
+    }
+}

+ 153 - 0
OTSIncAReportApp/GBCalculate/NationalStandardMethodTwo.resx

@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="pictureBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAAKoAAAAfCAYAAAB3cVZEAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+        wwAADsMBx2+oZAAABhBJREFUeF7tmI1NZDEMhGmBGmiBHiiBGmiBDuiADqiACmiABuiAHvb0oTU3O2s7
+        eYvQ3ZMykgW8OI5/xk7urg4LCzvAIurCr+Lt7e3w+Ph4uLu7O1xdXZ3I7e3t4eHh4UtnhEXUhV8B5Lu5
+        uTkjZyUQ+f39/bj7HEOifnx8pB1xfX399e35+fnw+fl51D4Ha53DdBX2OUeB05n+SJ6eno4W/gIf8BN/
+        8Vv1+Zad77i/vz/ZxySoQJFCj/MuBXY4hxzp2eQTf15eXo6ap/AYZ4Q8KDRnrkeOu5qTT90zK/hd1aEk
+        Ko7MHsgBVTcQbLbHBRuaeJKR6Y2E8xT8PVu4qvBV07y+vh41TqG+Q6qtoFhOkEogsZJGm2SLQPwAcY1y
+        5sQO0FiqR/zUwPlBjJzj+pXdlKgE7l08kqob3JFOsBFJv4So7sOWs0My8kHgTBf7GZRklU4FCjrbWCHU
+        KnApUSPu2ZssIxQ2VMeHRgWPOePRGVEzktIVFCtIxE/+9oRmRVFbmlCQdW5GlIASgH0dnKToQ35NAmdl
+        sTqqm6XyQXVmiwUykhKz5gT/syaubgPg+j7dFJpjhDxG3TmbeIIPCnTUd12neZjYus7f6of6mOXsjKhe
+        FAoZjjq8g7LC6XpGZD8PhyuoXtbRgcyvqjjEprqI62rxnNjeWOzVdYo0C7fdTWPPm17dDidfBc+FD5YO
+        EDP2aQ275yN1icGhN0HGgROv2eSGKpIGVB9R+DWUdYp3ezUZnAAdoel41R2RxQvp+rqmBUGcTL4+C9/X
+        NSLw3Hb6Osk6Pbe5hajRZMoZ6q32MgldPXtIVL8uK9IoVB9RuKMZYXyKVJPPC+mTLDAiUoaOqN4gJFZ9
+        pjAKnSBbCu3NpU+UDLNE9eGDfxV8oiIz+dN9oc83b5CIiZ/8rbY3EVUNI8H2DqqPKJz4Dk929j4MuK2q
+        kFyBqlcRWtERVYkfpOxuAbU1U2TgzTBD8FmieuOqrxk8Fwh16fKoT62w73kbcUnjad+oHnj35lHoHiea
+        Th5NPk5TbG+MLhndFFOovU5P4cXRJtAGCTL4lNJc6fcs4Rmc+DP7vF5VU/gbsbqxAsTm0z2E+DPCqf/R
+        5HpuN8UDevuGDcU3Uf2azsavoyM3AenaSEbTR3Wr6eGTqdJz6B4ntzaI5kS/I8Tr52cJz+C3wMy+WXJ7
+        E86AWPwGCyFuJ6v6EtBz2RPNz170nbyagwzfXz3w0RUBvFt1j5O4EyVABrdV6bvezNWr11a2R9d04ntj
+        E7vbmoWTqXrWKLxRqj2qM9u4ARrPfUO8KTKiOjdctIY61KqbvCTqqKsx7le3dprbcyEBBDxTFCdF9USY
+        JbTCC6G23Z76yu+6RoI1Zog0C/dhBPerOssn/MwVnMGnqxNe446nBT+dHypKdiV1NSAvnqjeMT6J/Dr7
+        CTxRFbm3TlSfgP7G1gbJ3rs61VjXmLeQwok6al6fplWt+D6jN4LntSOqDgfISk6UsOxVkqqP3T+mS6K6
+        MwpPAI74u0Uf5FumSwYnRAVPaOZXIOt49iu0QbJ8+KRX2UIKJ6oW2zGabgofJjHttsLj9CbEbqyR09lz
+        3K7nX/FNVD0shG7QQ/ndJyXiV7G+OZDRZBtBbXWFAU4+SK7+Ma28KZFsAmqDZOTx619ltlggIzzn6WQl
+        Bp+kxNpNX2+ACjQVg4UcqN+RK89pdqafRc3x2XWxT7z+PwujG+jE+4yEI8kmh082HLsUbqubNiAr+kiq
+        RlIdb8ZAlbMtoLG9cCOZmVyq3zX4lrpX+ccXJ/SsjGoKTjJKwrwzKqG7q0RxsOp2I30EJ15FGIVfeZWQ
+        2MqeN0g1ufwZhIymfgZyOUtWiFU9aQLY0z3dxPLnRCbkajRwONOnfifEO8uNtPUpHsnwxOFEjPQOShRs
+        /ARKVGx1V52CpOGrJw4bxAbBumLrudiogA09oyP/CNjCL4ju04lvfjV3UKLO+MS55MtrzrnkYtQYCs7K
+        ch/2iGPr8Np2Ry0s/CMsoi7sAouoC7vAF1H9HbFkyX8ni6hLdiEQdWHhf8ci6sIusIi6sAssoi7sAouo
+        CzvA4fAHgW7crI7nKn8AAAAASUVORK5CYII=
+</value>
+  </data>
+</root>