using OTSIncAReportApp; using OTSIncAReportApp.DataOperation.DataAccess; using OTSCommon.Model; using OTSIncAReportApp.OTSSampleReportInfo; using OTSIncAReportApp.SysMgrTools; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Windows.Forms; namespace OTSIncAReportGrids { public partial class ResultGrid : UserControl { #region 变量定义 //测量结果 frmReportApp m_frmReportApp = null; //国际化 Language lan; public Hashtable table; frmReportConditionChoose m_condition; #endregion #region 窗体加载及构造函数 public ResultGrid(frmReportApp frmReportApp) { m_frmReportApp = frmReportApp; m_condition = frmReportApp.m_conditionChoose; InitializeComponent(); //国际化 lan = new Language(this); table = lan.GetNameTable(this.Name); } private void ResultGrid_Load(object sender, EventArgs e) { BindGrid(); SetDataGridViewStyleIncLib(); } #endregion #region 绑定数据 private void BindGrid() { string str1 = table["str1"].ToString(); string str8 = table["str8"].ToString(); Gview_gz.Rows.Clear(); Gview_gz.Columns.Clear(); //创建列 Gview_gz.Columns.Add(str1, str1); Gview_gz.Columns.Add(str8, str8); //自适应列宽 if (this.Width > 0) { //再对不同的列宽度进行设置 Gview_gz.Columns[0].Width = this.Width / 2; Gview_gz.Columns[1].Width = this.Width / 2; } //先设置一下头的高度,否则会太矮不好看 Gview_gz.ColumnHeadersVisible = false; Gview_gz.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing; Gview_gz.ColumnHeadersHeight = 30; //int idx = m_frmReportApp.m_DataMgrFun.GetPropIndexByPropItemName(m_frmReportApp.SourceGridData.ConditionItemList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE); //string sou = m_frmReportApp.SourceGridData.ConditionItemList[idx].itemVal.ToString(); string sou = m_condition.m_CurrentConditions[OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE].itemDisplayVal.ToString(); //string sou= m_frmReportApp.m_conditionChoose.m_SourceGridData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE).ToString(); if (sou.Contains("+")) { for (int i = 0; i < sou.Split('+').Length; i++) { ResultFile resultFile = m_frmReportApp.m_rstDataMgr.ResultFilesList.Find(s => s.FileName == sou.Split('+')[i]); if (resultFile != null) { addGrid(resultFile); } } } else { for (int i=0;i< m_frmReportApp.m_rstDataMgr.ResultFilesList.Count;i++) { if(sou== m_frmReportApp.m_rstDataMgr.ResultFilesList[i].FileName.ToString()) addGrid(m_frmReportApp.m_rstDataMgr.ResultFilesList[i]); } //int item= (int)m_frmReportApp.m_conditionChoose.m_SourceGridData.GetPropItemDisplayValueByPropItem(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE); //m_frmReportApp.m_rstDataMgr.SetWorkingResult(item); //addGrid(m_frmReportApp.m_rstDataMgr.ResultFilesList[m_frmReportApp.m_rstDataMgr.GetWorkingResult()]); } } /// /// 获取测量结果概况信息数据 /// /// public Dictionary GetData_ResultGrid(ResultFile resultFile) { ResultFile resfile = resultFile; Dictionary keyValues = new Dictionary() { }; keyValues.Add(table["col1"].ToString(), resfile.FileName); string path = resfile.FilePath; FieldData fielddata = new FieldData(path); DataTable dt = fielddata.GetGeneralInfo(); DateTime star = new DateTime(); DateTime end = new DateTime(); System.Globalization.DateTimeFormatInfo dtFormat = new System.Globalization.DateTimeFormatInfo(); dtFormat.ShortDatePattern = "dd/MM/yyyy hh:mm:ss"; if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["name"].ToString() == "TimeStart") { star = Convert.ToDateTime(dt.Rows[i]["value"], dtFormat); } if (dt.Rows[i]["name"].ToString() == "TimeEnd") { end = Convert.ToDateTime(dt.Rows[i]["value"], dtFormat); } } } TimeSpan timeSpan = end - star; int filedCount = fielddata.GetFiledCount(); Dictionary sampleMembers = ((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"]); Dictionary semDataMsr = (Dictionary)sampleMembers["SEMDataMsr"]; double scanFieldSize = Convert.ToDouble(semDataMsr["ScanFieldSize"]); Dictionary imageScanParam = (Dictionary)((Dictionary)((Dictionary)sampleMembers["MsrParams"])["Members"])["ImageScanParam"]; string ImageResolution = imageScanParam["ImageResolution"].ToString(); double wide = Convert.ToDouble(ImageResolution.Split('_')[1]); double high = Convert.ToDouble(ImageResolution.Split('_')[2]); double pixelSize = scanFieldSize / wide; double filedsArea = Math.Round(high * wide * pixelSize* pixelSize* filedCount, 2); int particleArea = fielddata.GetparticleArea(); double ratio = particleArea / filedsArea; int ScanFieldSize100 = Convert.ToInt32(((Dictionary)((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"])["SEMDataMsr"])["ScanFieldSize100"].ToString()); int ScanFieldSize = Convert.ToInt32(((Dictionary)((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"])["SEMDataMsr"])["ScanFieldSize"].ToString()); double Magnification = ScanFieldSize100 * 100 / ScanFieldSize; //报告参数文件 string xmlpath = Application.StartupPath + m_frmReportApp.m_OTSReportMgrParamFile; DataSet ds = XMLoperate.GetXmlData(xmlpath, "XMLData"); DataTable dt1 = ds.Tables["Member"]; string sizestr = "1000"; for (int i = 0; i < dt1.Rows.Count; i++) { if (dt1.Rows[i]["RegName"].ToString() == "Scale") { sizestr = dt1.Rows[i]["strValue"].ToString(); break; } } keyValues.Add(table["col2"].ToString(), star.ToString("yyyy-MM-dd HH:mm:ss")); keyValues.Add(table["col3"].ToString(), end.ToString("yyyy-MM-dd HH:mm:ss")); keyValues.Add(table["col4"].ToString(), Math.Round(timeSpan.TotalMinutes, 2).ToString() + "mins"); keyValues.Add(table["col5"].ToString(), filedCount.ToString()); keyValues.Add(table["col12"].ToString(), Math.Round(Magnification, 2).ToString()); string LibraryName = ""; if ("NoSTDDB"== ((Dictionary)((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"])["MsrParams"])["STDName"].ToString()) { LibraryName = "OTSIncASysSTD"; } else { LibraryName = ((Dictionary)((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"])["MsrParams"])["STDName"].ToString(); } keyValues.Add(table["col6"].ToString(), LibraryName); keyValues.Add(table["col7"].ToString(), fielddata.GetparticleCount().ToString()); keyValues.Add(table["col8"].ToString(), filedsArea.ToString()); keyValues.Add(table["col9"].ToString(), particleArea.ToString()); keyValues.Add(table["col10"].ToString(), ratio.ToString()); keyValues.Add(table["col11"].ToString(), sizestr); return keyValues; } public Dictionary GetData_ResultGrid_Report() { ResultFile resfile = m_frmReportApp.m_rstDataMgr.ResultFilesList[m_frmReportApp.m_rstDataMgr.getSelectedIndex()]; Dictionary keyValues = new Dictionary() { }; keyValues.Add(table["col1"].ToString(), resfile.FileName); string path = resfile.FilePath; FieldData fielddata = new FieldData(path); DataTable dt = fielddata.GetGeneralInfo(); DateTime star = new DateTime(); DateTime end = new DateTime(); System.Globalization.DateTimeFormatInfo dtFormat = new System.Globalization.DateTimeFormatInfo(); dtFormat.ShortDatePattern = "dd/MM/yyyy hh:mm:ss"; if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["name"].ToString() == "TimeStart") { star = Convert.ToDateTime(dt.Rows[i]["value"], dtFormat); } if (dt.Rows[i]["name"].ToString() == "TimeEnd") { end = Convert.ToDateTime(dt.Rows[i]["value"], dtFormat); } } } TimeSpan timeSpan = end - star; string all_FiledCount = ((Dictionary)((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"])["SEMDataMsr"])["TotalFields"].ToString(); //当前屏幕尺寸/µm double ScanFieldSize = Convert.ToDouble( ((Dictionary)((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"])["SEMDataMsr"])["ScanFieldSize"]); //100倍时屏幕尺寸/µm double ScanFieldSize100 = Convert.ToDouble(((Dictionary)((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"])["SEMDataMsr"])["ScanFieldSize100"]); double Magnification = ScanFieldSize100 / ScanFieldSize * 100; int filedCount = fielddata.GetFiledCount(); Dictionary sampleMembers = ((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"]); Dictionary semDataMsr = (Dictionary)sampleMembers["SEMDataMsr"]; double scanFieldSize = Convert.ToDouble(semDataMsr["ScanFieldSize"]); Dictionary imageScanParam = (Dictionary)((Dictionary)((Dictionary)sampleMembers["MsrParams"])["Members"])["ImageScanParam"]; string ImageResolution = imageScanParam["ImageResolution"].ToString(); double wide = Convert.ToDouble(ImageResolution.Split('_')[1]); double high = Convert.ToDouble(ImageResolution.Split('_')[2]); double pixelSize = scanFieldSize / wide; double filedsArea = Math.Round(high * wide * pixelSize * pixelSize * filedCount, 2); int particleArea = fielddata.GetparticleArea(); double ratio = particleArea / filedsArea; //报告参数文件 string xmlpath = Application.StartupPath + m_frmReportApp.m_OTSReportMgrParamFile; DataSet ds = XMLoperate.GetXmlData(xmlpath, "XMLData"); DataTable dt1 = ds.Tables["Member"]; string sizestr = "1000"; for (int i = 0; i < dt1.Rows.Count; i++) { if (dt1.Rows[i]["RegName"].ToString() == "Scale") { sizestr = dt1.Rows[i]["strValue"].ToString(); break; } } keyValues.Add(table["col2"].ToString(), star.ToString("yyyy-MM-dd HH:mm:ss")); keyValues.Add(table["col3"].ToString(), end.ToString("yyyy-MM-dd HH:mm:ss")); keyValues.Add(table["col4"].ToString(), Math.Round(timeSpan.TotalMinutes, 2).ToString() + "mins"); keyValues.Add(table["col5"].ToString(), all_FiledCount.ToString()); string LibraryName = ""; if ("NoSTDDB" == ((Dictionary)((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"])["MsrParams"])["STDName"].ToString()) { LibraryName = "OTSIncASysSTD"; } else { LibraryName = ((Dictionary)((Dictionary)((Dictionary)resfile.ResultInfo["Sample"])["Members"])["MsrParams"])["STDName"].ToString(); } keyValues.Add(table["col6"].ToString(), LibraryName); keyValues.Add(table["col7"].ToString(), fielddata.GetparticleCount().ToString()); keyValues.Add(table["col8"].ToString(), filedsArea.ToString()); keyValues.Add(table["col9"].ToString(), particleArea.ToString()); keyValues.Add(table["col10"].ToString(), ratio.ToString()); keyValues.Add(table["col11"].ToString(), sizestr); keyValues.Add("Magnification", Math.Round(Magnification,2).ToString()); return keyValues; } /// /// 绑定GridView显示 /// /// private void addGrid(ResultFile resultFile) { Dictionary keyValues = GetData_ResultGrid(resultFile); Dictionary.Enumerator en = keyValues.GetEnumerator(); for (int irow = 0; irow < keyValues.Count; irow++) { if (en.MoveNext()) { //add row int add_rowindex = 0; add_rowindex = Gview_gz.Rows.Add(); if (irow == 0) { //set title style Gview_gz.Rows[add_rowindex].Cells[0].Style.BackColor = System.Drawing.Color.PowderBlue; Gview_gz.Rows[add_rowindex].Cells[1].Style.BackColor = System.Drawing.Color.PowderBlue; } else { //set row style Gview_gz.Rows[add_rowindex].Cells[0].Style.BackColor = System.Drawing.Color.LightCyan; } //set value Gview_gz.Rows[add_rowindex].Cells[0].Value = en.Current.Key; Gview_gz.Rows[add_rowindex].Cells[1].Value = en.Current.Value; } } //将左侧第一列,全部设置成System.Drawing.Color.PowderBlue; 当标题头不错 for (int i = 0; i < Gview_gz.Rows.Count; i++) { Gview_gz.Rows[i].Cells[0].Style.Font = new System.Drawing.Font("黑体", 10, System.Drawing.FontStyle.Bold); Gview_gz.Rows[i].Cells[1].Style.Font = new System.Drawing.Font("黑体", 10, System.Drawing.FontStyle.Bold); } } #endregion #region 设置Grid样式 /// /// 设置夹杂物列表DataGridView样式 /// private void SetDataGridViewStyleIncLib() { //用户不能调整标题的高度 Gview_gz.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; //用户不能调整 行高 Gview_gz.AllowUserToResizeRows = false; //再次重覆禁用拖动表头高度,居然有效果了 Gview_gz.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; //设置grid可以复制 Gview_gz.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText; //设置每列的宽度 // dgV_IncALib.Columns[1].Width = 40; Gview_gz.Columns[0].Width = 300; //设置序号列不排序 Gview_gz.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable; //设置序号列不可以设置宽度 Gview_gz.Columns[0].Resizable = DataGridViewTriState.False; System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); dataGridViewCellStyle1.BackColor = System.Drawing.Color.LightCyan; Gview_gz.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; Gview_gz.BackgroundColor = System.Drawing.Color.White; Gview_gz.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; Gview_gz.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;//211, 223, 240 dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(223)))), ((int)(((byte)(240))))); dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); dataGridViewCellStyle2.ForeColor = System.Drawing.Color.Navy; dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; Gview_gz.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; Gview_gz.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; Gview_gz.EnableHeadersVisualStyles = false; Gview_gz.GridColor = System.Drawing.SystemColors.GradientInactiveCaption; Gview_gz.ReadOnly = true; Gview_gz.RowHeadersVisible = false; //建议改为true;为了以后显示序号。 Gview_gz.RowTemplate.Height = 23; Gview_gz.RowTemplate.ReadOnly = true; //居中 Gview_gz.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft; } #endregion #region 得到向word中插入Table所需要使用的,该模块结合后的对象数组 /// /// 获取到该模块输出后形成的DataTable,和GridView /// /// /// public void GetDataTableAndGridView(out DataTable out_dt, out DataGridView out_dg) { out_dt = null; out_dg = this.Gview_gz; } #endregion #region 相关事件 /// /// 复制选择区域 /// public void CopySelected() { //复制选择区域 object oo = Gview_gz.GetClipboardContent(); Clipboard.SetDataObject(Gview_gz.GetClipboardContent()); } /// /// 复制所有 /// public void CopyAll() { Gview_gz.SelectAll(); Clipboard.SetDataObject(Gview_gz.GetClipboardContent()); } //复制整个表 private void ToolStripMenuItem1_Click(object sender, EventArgs e) { CopyAll(); } //复制选择区域 private void ToolStripMenuItem2_Click(object sender, EventArgs e) { CopySelected(); } //恢复初始状态 private void ToolStripMenuItem3_Click(object sender, EventArgs e) { } #endregion } }