using DevExpress.Utils.Extensions; using NPOI.Util; using OTSIncAReportApp._1_UI.OTSReportExport; using OTSIncAReportApp._1_UI.OTSTemplateDesigner; using OTSIncAReportApp.DataOperation.DataAccess; using OTSIncAReportApp.OTSSampleReportInfo; using OTSIncAReportApp.SysMgrTools; using OTSPeriodicTable; using OTSRptPeriodicTable; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Drawing; using System.IO; using System.Net.Mail; using System.Windows.Forms; namespace OTSIncAReportApp.OTSTemplateDesigner { public partial class OTSReport_Template_INCA : Form { #region 全局变量 public OTSReport_Export m_OTSReport_Export; public string FileName = ""; private string fileName = ""; Hashtable table; ParticleData fielddata; private List DeleteClass_Serial = new List(); #endregion #region 构造函数及窗体加载 public OTSReport_Template_INCA(OTSReport_Export in_otsreport_export,string a_FileName) { InitializeComponent(); m_OTSReport_Export = in_otsreport_export; FileName = a_FileName; #region 国际化语言 OTSCommon.Language lan = new OTSCommon.Language(this); table = lan.GetNameTable(this.Name); #endregion } private void OTSReport_TemplateDesignerRM_Load(object sender, EventArgs e) { //绑定各下拉框的值 BindControl(); //读取默认值 LoadControls(); try { fielddata = new ParticleData(m_OTSReport_Export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_OTSReport_Export.m_ReportApp.m_rstDataMgr.GetWorkingResultId()].FilePath); }catch { } DeleteClass_Serial = m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial; } /// /// 为各下拉控件绑定值 /// private void BindControl() { comboBox1.Items.Clear(); comboBox1.Items.Add("饼状图"); comboBox1.Items.Add("柱状图"); comboBox1.Items.Add("线状图"); comboBox2.Items.Clear(); comboBox2.Items.Add("饼状图"); comboBox2.Items.Add("柱状图"); comboBox2.Items.Add("线状图"); #region 元素选择 string[] PeriodicTable = { "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hq", "TI", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Mc", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg", "Unb" }; //comboBox_PeriodicTable.Items.AddRange(PeriodicTable); AutoCompleteStringCollection sc = new AutoCompleteStringCollection(); sc.AddRange(PeriodicTable); #endregion #region 三元相图 //三元相图模板s ComboBox lscb = new ComboBox(); BindComboBox(lscb, OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE); for (int i = 0; i < lscb.Items.Count; i++) { lbv_syxt_mblb.Items.Add(lscb.Items[i].ToString()); } #endregion #region 颗粒列表 //排序方式 BindComboBox(comboBox_p1, OTS_REPORT_PROP_GRID_ITEMS.PARTICE_LIST); BindComboBox(comboBox_p2, OTS_REPORT_PROP_GRID_ITEMS.PARTICE_LIST); BindComboBox(comboBox_p3, OTS_REPORT_PROP_GRID_ITEMS.PARTICE_LIST); #endregion } /// /// 验证各控件输入的值 /// private bool VerifyControlValue() { int selectnumber = 0; for (int i = 0; i < lbv_syxt_mblb.CheckedItems.Count; i++) { if (lbv_syxt_mblb.CheckedItems[i].Checked == true) selectnumber++; } return true; } #endregion #region 按键事件 private void button2_Click(object sender, EventArgs e) { this.Close(); } private void button1_Click(object sender, EventArgs e) { NewFileName newFileName = new NewFileName(Application.StartupPath + "\\Config\\ReportTemplate\\Inca_Template", FileName); newFileName.ShowDialog(); string strpath = newFileName.ChangePathName; if (newFileName.Save) { SaveTemplateParameters(); SaveFileToXml(strpath); this.Close(); } } private void button4_Click(object sender, EventArgs e) { //元素分析表,显示元素 SetPeriodicTableControl(tb_ysfx_xsys, m_OTSReport_Export.m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys); } #endregion #region 自定义方法 /// ///保存到文件 /// private void SaveFileToXml(string a_path ) { if (m_OTSReport_Export.m_mbszclass.M_SY.LOGName != fileName) { pictureBox7.Image.Save(System.IO.Directory.GetCurrentDirectory() + "\\Config\\ReportTemplate\\" + fileName); } string path = System.IO.Directory.GetCurrentDirectory() + "\\Config\\ReportTemplate\\Inca_Template\\" + a_path; if (path != string.Empty) { OTSIncAReportApp.Controls.XmlOperateUtil xmlutil = new OTSIncAReportApp.Controls.XmlOperateUtil(path); //首页 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SY.str_tb_ZBT.ToString(), "M_SY", "str_tb_ZBT"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SY.str_tb_FBT.ToString(), "M_SY", "str_tb_FBT"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SY.str_tb_YPBH.ToString(), "M_SY", "str_tb_YPBH"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SY.str_tb_SampleName.ToString(), "M_SY", "str_tb_SampleName"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SY.str_tb_CKBZ.ToString(), "M_SY", "str_tb_CKBZ"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SY.b_ck_ypsm.ToString(), "M_SY", "b_ck_ypsm"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SY.LOGName.ToString(), "M_SY", "LOGName"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SY.StandardLibraryName.ToString(), "M_SY", "StandardLibraryName"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SY.str_tb_djsb.ToString(), "M_SY", "str_tb_djsb"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SY.str_tb_npsb.ToString(), "M_SY", "str_tb_npsb"); //页眉页脚 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YMYJ.str_tb_ymwb.ToString(), "M_YMYJ", "str_tb_ymwb"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YMYJ.str_tb_KHH.ToString(), "M_YMYJ", "str_tb_KHH"); //xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YMYJ.b_ck_ym.ToString(), "M_YMYJ", "b_ck_ym"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YMYJ.str_tb_yjwb.ToString(), "M_YMYJ", "str_tb_yjwb"); //颗粒分析结果 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk.ToString(), "M_KLFXJG", "b_ck_klcc_xsmk");//是否显示模块 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_xsddt.ToString(), "M_KLFXJG", "b_ck_klcc_xsddt"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.index_cb_klcc_klfw.ToString(), "M_KLFXJG", "index_cb_klcc_klfw");//颗粒范围 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_cb_jzwfl_xsmk.ToString(), "M_KLFXJG", "b_cb_jzwfl_xsmk");//是否显示该模块 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.index_cb_jzwfl_xstx.ToString(), "M_KLFXJG", "index_cb_jzwfl_xstx");//选择图像 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.index_cb_jzwfl_jsfs.ToString(), "M_KLFXJG", "index_cb_jzwfl_jsfs");//计算方式 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.index_cb_jzwfl_ljb.ToString(), "M_KLFXJG", "index_cb_jzwfl_ljb");//粒级表 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.index_cb_jzwfl_klfw.ToString(), "M_KLFXJG", "index_cb_jzwfl_klfw");//颗粒范围 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_dfl.ToString(), "M_KLFXJG", "b_ck_klcc_dfl");//大分类是否显示 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_xfl.ToString(), "M_KLFXJG", "b_ck_klcc_xfl");//小分类是否显示 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.ParticleSizeGraphicSelection.ToString(), "M_KLFXJG", "ParticleSizeGraphicSelection"); xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLFXJG.INCAGraphicSelection.ToString(), "M_KLFXJG", "INCAGraphicSelection"); //元素分析结果 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk.ToString(), "M_YSFXJG", "b_ck_ysfx_xsmk"); //是否显示模块 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.index_cb_yxfx_jsfs.ToString(), "M_YSFXJG", "index_cb_yxfx_jsfs"); //计算方式 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.index_cb_ysfx_klfw.ToString(), "M_YSFXJG", "index_cb_ysfx_klfw"); //颗粒范围 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.str_tb_ysfx_xsys.ToString(), "M_YSFXJG", "str_tb_ysfx_xsys"); //显示元素 for (int i = 0; i < m_OTSReport_Export.m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Count; i++) //元素列表 { xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys[i].ToString(), "M_YSFXJG", "list_str_tb_ysfx_xsys", "YS" + i.ToString()); } //然后判断一下xml中是否还存在之前比现有长度长的节点存在,存在则删除,防止后面再进行读取 for (int i = m_OTSReport_Export.m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Count; i < 1000; i++) { string strxh = i.ToString(); if (null != xmlutil.Read("M_YSFXJG", "list_str_tb_ysfx_xsys", "YS" + strxh)) { //删除该节点 xmlutil.RemoveNode("M_YSFXJG", "list_str_tb_ysfx_xsys", "YS" + strxh); } else { break; } } xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk.ToString(), "M_YSFXJG", "b_ck_yscf_xsmk"); //是否显示模块 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.index_cb_yscf_xstx.ToString(), "M_YSFXJG", "index_cb_yscf_xstx"); //显示图形 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.index_cb_yscf_jsfs.ToString(), "M_YSFXJG", "index_cb_yscf_jsfs"); //计算方式 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.index_cb_yscf_klfw.ToString(), "M_YSFXJG", "index_cb_yscf_klfw"); //颗粒范围 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.str_tb_yscf_ysxx.ToString(), "M_YSFXJG", "str_tb_yscf_ysxx"); //显示元素 for (int i = 0; i < m_OTSReport_Export.m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx.Count; i++) //元素列表 { xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx[i].ToString(), "M_YSFXJG", "list_str_tb_yscf_ysxx", "YS" + i.ToString()); } //然后判断一下xml中是否还存在之前比现有长度长的节点存在,存在则删除,防止后面再进行读取 for (int i = m_OTSReport_Export.m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx.Count; i < 1000; i++) { string strxh = i.ToString(); if (null != xmlutil.Read("M_YSFXJG", "list_str_tb_yscf_ysxx", "YS" + strxh)) { //删除该节点 xmlutil.RemoveNode("M_YSFXJG", "list_str_tb_yscf_ysxx", "YS" + strxh); } else { break; } } //三元相图 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SYXT.b_ck_syxt_xsmk.ToString(), "M_SYXT", "b_ck_syxt_xsmk"); //是否显示模块 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SYXT.index_cb_syxt_jsfs.ToString(), "M_SYXT", "index_cb_syxt_jsfs"); //计算方式 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SYXT.index_cb_syxt_klfw.ToString(), "M_SYXT", "index_cb_syxt_klfw"); //颗粒范围 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SYXT.str_cb_syxt_mhxssl.ToString(), "M_SYXT", "str_cb_syxt_mhxssl"); //每行显示数量 for (int i = 0; i < m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Count; i++) //三元相图模板 list 文本 { xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb[i].ToString(), "M_SYXT", "list_lbv_syxt_mblb", "MB" + i.ToString()); } //然后判断一下xml中是否还存在之前比现有长度长的节点存在,存在则删除,防止后面再进行读取 for (int i = m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Count; i < 1000; i++) { string strxh = i.ToString(); if (null != xmlutil.Read("M_SYXT", "list_lbv_syxt_mblb", "MB" + strxh)) { //删除该节点 xmlutil.RemoveNode("M_SYXT", "list_lbv_syxt_mblb", "MB" + strxh); } else { break; } } for (int i = 0; i < m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Count; i++) //三元相图模板 list 索引 { xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index[i].ToString(), "M_SYXT", "list_lbv_syxt_mblb_index", "MBIndex" + i.ToString()); } //然后判断一下xml中是否还存在之前比现有长度长的节点存在,存在则删除,防止后面再进行读取 for (int i = m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Count; i < 1000; i++) { string strxh = i.ToString(); if (null != xmlutil.Read("M_SYXT", "list_lbv_syxt_mblb_index", "MBIndex" + strxh)) { //删除该节点 xmlutil.RemoveNode("M_SYXT", "list_lbv_syxt_mblb_index", "MBIndex" + strxh); } else { break; } } //颗粒列表信息 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk.ToString(), "M_KLLBXX", "b_ck_kllb_xsmk"); //是否显示模块 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.b_ck_kllb_fjzt.ToString(), "M_KLLBXX", "b_ck_kllb_fjzt");//附加帧图 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_jsfs.ToString(), "M_KLLBXX", "index_cb_kllb_jsfs"); //计算方式 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_klfw.ToString(), "M_KLLBXX", "index_cb_kllb_klfw"); //颗粒范围 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_tb_kllb_sxys.ToString(), "M_KLLBXX", "str_tb_kllb_sxys"); //显示元素 for (int i = 0; i < m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys.Count; i++) //显示元素列表 { xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys[i].ToString(), "M_KLLBXX", "list_str_tb_lllb_sxys", "YS" + i.ToString()); } //然后判断一下xml中是否还存在之前比现有长度长的节点存在,存在则删除,防止后面再进行读取 for (int i = m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys.Count; i < 1000; i++) { string strxh = i.ToString(); if (null != xmlutil.Read("M_KLLBXX", "list_str_tb_lllb_sxys", "YS" + strxh)) { //删除该节点 xmlutil.RemoveNode("M_KLLBXX", "list_str_tb_lllb_sxys", "YS" + strxh); } else { break; } } xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_cb_kllb_sort_p1.ToString(), "M_KLLBXX", "str_cb_kllb_sort_p1");//颗粒排序表列第一个可选参数(string) xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_sort_p1.ToString(), "M_KLLBXX", "index_cb_kllb_sort_p1");//颗粒排序表列第一个可选参数(index) xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_cb_kllb_sort_p2.ToString(), "M_KLLBXX", "str_cb_kllb_sort_p2");//颗粒排序表列第二个可选参数(string) xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_sort_p2.ToString(), "M_KLLBXX", "index_cb_kllb_sort_p2");//颗粒排序表列第二个可选参数(index) xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_cb_kllb_sort_p3.ToString(), "M_KLLBXX", "str_cb_kllb_sort_p3");//颗粒排序表列第三个可选参数(string) xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_sort_p3.ToString(), "M_KLLBXX", "index_cb_kllb_sort_p3");//颗粒排序表列第三个可选参数(index) xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_int_kllb_number.ToString(), "M_KLLBXX", "list_int_kllb_number");//保存显示颗粒数量 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_kllb_qcys.ToString(), "M_KLLBXX", "str_kllb_qcys"); for (int i = 0; i < m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_qcys.Count; i++) //去除元素列表 { xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_qcys[i].ToString(), "M_KLLBXX", "list_str_kllb_qcys", "YS" + i.ToString()); } //然后判断一下xml中是否还存在之前比现有长度长的节点存在,存在则删除,防止后面再进行读取 for (int i = m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_qcys.Count; i < 1000; i++) { string strxh = i.ToString(); if (null != xmlutil.Read("M_KLLBXX", "list_str_kllb_qcys", "YS" + strxh)) { //删除该节点 xmlutil.RemoveNode("M_KLLBXX", "list_str_kllb_qcys", "YS" + strxh); } else { break; } } for (int i = 0; i < m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Count; i++) //去除元素列表 { xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass[i].ToString(), "M_KLLBXX", "list_str_kllb_DeleteClass", "YS" + i.ToString()); } //然后判断一下xml中是否还存在之前比现有长度长的节点存在,存在则删除,防止后面再进行读取 for (int i = m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Count; i < 1000; i++) { string strxh = i.ToString(); if (null != xmlutil.Read("M_KLLBXX", "list_str_kllb_DeleteClass", "YS" + strxh)) { //删除该节点 xmlutil.RemoveNode("M_KLLBXX", "list_str_kllb_DeleteClass", "YS" + strxh); } else { break; } } for (int i = 0; i < m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial.Count; i++) //去除元素列表 { xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial[i].ToString(), "M_KLLBXX", "list_str_kllb_DeleteClass_Serial", "YS" + i.ToString()); } //然后判断一下xml中是否还存在之前比现有长度长的节点存在,存在则删除,防止后面再进行读取 for (int i = m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial.Count; i < 1000; i++) { string strxh = i.ToString(); if (null != xmlutil.Read("M_KLLBXX", "list_str_kllb_DeleteClass_Serial", "YS" + strxh)) { //删除该节点 xmlutil.RemoveNode("M_KLLBXX", "list_str_kllb_DeleteClass_Serial", "YS" + strxh); } else { break; } } //夹杂物占比 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_JZWZB.b_ck_surface.ToString(), "M_JZWZB", "b_ck_surface");//夹杂物占比表 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_JZWZB.b_ck_chart.ToString(), "M_JZWZB", "b_ck_chart");//夹杂物占比图 xmlutil.Write(m_OTSReport_Export.m_mbszclass.str_MainPriority, "whole", "str_MainPriority"); //优先排序 xmlutil.Write(m_OTSReport_Export.m_mbszclass.list_str_MainPriority.ToString(), "whole", "list_str_MainPriority");//全局优先排序 for (int i = 0; i < m_OTSReport_Export.m_mbszclass.list_str_MainPriority.Count; i++) //去除元素列表 { xmlutil.Write(m_OTSReport_Export.m_mbszclass.list_str_MainPriority[i].ToString(), "whole", "list_str_MainPriority", "YS" + i.ToString()); } xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_SYXT.str_cb_syxt_ljb, "M_SYXT", "str_cb_syxt_ljb"); //备注 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_DZ.Notes, "M_DZ", "Notes"); } } private void SaveTemplateParameters() { m_OTSReport_Export.m_mbszclass.M_DZ.Notes = textBox1.Text; string[] after = tb_ysfx_xsys.Text.Split(new char[] { ',' }); m_OTSReport_Export.m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Clear(); for (int i = 0; i < after.Length; i++) { m_OTSReport_Export.m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Add(after[i]); } m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial.Clear(); m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial = DeleteClass_Serial.Copy(); m_OTSReport_Export.m_mbszclass.M_SY.LOGName = fileName; //首页 m_OTSReport_Export.m_mbszclass.M_SY.str_tb_ZBT = tb_ZBT.Text; m_OTSReport_Export.m_mbszclass.M_SY.str_tb_FBT = tb_FBT.Text; m_OTSReport_Export.m_mbszclass.M_SY.str_tb_YPBH = tb_YPBH.Text; m_OTSReport_Export.m_mbszclass.M_SY.str_tb_SampleName = tb_ypmc.Text; m_OTSReport_Export.m_mbszclass.M_SY.str_tb_CKBZ = tb_CKBZ.Text; m_OTSReport_Export.m_mbszclass.M_YMYJ.str_tb_yjwb = tb_yjwb.Text; m_OTSReport_Export.m_mbszclass.M_SY.str_tb_djsb = tb_djsb.Text; m_OTSReport_Export.m_mbszclass.M_SY.str_tb_npsb = tb_npsb.Text; //颗粒分析结果 m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk = ck_klcc_xsmk.Checked; m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_xsddt = ck_klcc_xsddt.Checked; //是否显示大分类 m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_dfl = checkBox1.Checked; //是否显示小分类 m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_xfl = checkBox2.Checked; m_OTSReport_Export.m_mbszclass.M_KLFXJG.ParticleSizeGraphicSelection = comboBox1.SelectedIndex; m_OTSReport_Export.m_mbszclass.M_KLFXJG.INCAGraphicSelection=comboBox2.SelectedIndex; // 元素分析结果 m_OTSReport_Export.m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk = ck_ysfx_xsmk.Checked; m_OTSReport_Export.m_mbszclass.M_YSFXJG.str_tb_ysfx_xsys = tb_ysfx_xsys.Text;//显示元素 //三元相图 m_OTSReport_Export.m_mbszclass.M_SYXT.b_ck_syxt_xsmk = ck_syxt_xsmk.Checked; //获取勾选的项 m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Clear(); m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Clear(); for (int i = 0; i < lbv_syxt_mblb.CheckedItems.Count; i++) { string str = lbv_syxt_mblb.CheckedItems[i].Text; m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Add(str); //同时保存三元素相图的索引 for (int j = 0; j < lbv_syxt_mblb.Items.Count; j++) { if (str == lbv_syxt_mblb.Items[j].Text) m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Add(j); } } //颗粒列表信息 m_OTSReport_Export.m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk = ck_kllb_xsmk.Checked; m_OTSReport_Export.m_mbszclass.M_KLLBXX.b_ck_kllb_fjzt = ck_kllb_fjzt.Checked; m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_int_kllb_number = Convert.ToInt32(numericMin.Text); m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_cb_kllb_sort_p1 = comboBox_p1.Text;//颗粒列表行第一个字段的可选参数 m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_sort_p1 = comboBox_p1.SelectedIndex; m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_cb_kllb_sort_p2 = comboBox_p2.Text;//颗粒列表行第二个字段的可选参数 m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_sort_p2 = comboBox_p2.SelectedIndex; m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_cb_kllb_sort_p3 = comboBox_p3.Text;//颗粒列表行第三个字段的可选参数 m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_sort_p3 = comboBox_p3.SelectedIndex; //夹杂物占比 m_OTSReport_Export.m_mbszclass.M_JZWZB.b_ck_surface = ck_jzwzb_surface.Checked;//夹杂物占比表 //去除信息 m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_kllb_qcys = tb_RemoveElements.Text;//去除不要的物质元素 } private void LoadControls() { //首页 tb_ZBT.Text = m_OTSReport_Export.m_mbszclass.M_SY.str_tb_ZBT; tb_FBT.Text = m_OTSReport_Export.m_mbszclass.M_SY.str_tb_FBT; tb_YPBH.Text = m_OTSReport_Export.m_mbszclass.M_SY.str_tb_YPBH; tb_ypmc.Text = m_OTSReport_Export.m_mbszclass.M_SY.str_tb_SampleName; tb_CKBZ.Text = m_OTSReport_Export.m_mbszclass.M_SY.str_tb_CKBZ; ck_ypsm.Checked = m_OTSReport_Export.m_mbszclass.M_SY.b_ck_ypsm; //ck_ym.Checked = m_OTSReport_Export.m_mbszclass.M_YMYJ.b_ck_ym; tb_yjwb.Text = m_OTSReport_Export.m_mbszclass.M_YMYJ.str_tb_yjwb; tb_djsb.Text = m_OTSReport_Export.m_mbszclass.M_SY.str_tb_djsb; tb_npsb.Text = m_OTSReport_Export.m_mbszclass.M_SY.str_tb_npsb; //颗粒分析结果 ck_klcc_xsmk.Checked = m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk; ck_klcc_xsddt.Checked = m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_xsddt; //是否显示大分类 checkBox1.Checked = m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_dfl; //是否显示小分类 checkBox2.Checked = m_OTSReport_Export.m_mbszclass.M_KLFXJG.b_ck_klcc_xfl; comboBox1.SelectedIndex = m_OTSReport_Export.m_mbszclass.M_KLFXJG.ParticleSizeGraphicSelection; comboBox2.SelectedIndex = m_OTSReport_Export.m_mbszclass.M_KLFXJG.INCAGraphicSelection; //元素分析结果 ck_ysfx_xsmk.Checked = m_OTSReport_Export.m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk; tb_ysfx_xsys.Text = m_OTSReport_Export.m_mbszclass.M_YSFXJG.str_tb_ysfx_xsys;//显示元素 //三元相图 ck_syxt_xsmk.Checked = m_OTSReport_Export.m_mbszclass.M_SYXT.b_ck_syxt_xsmk; //获取勾选的项 for (int i = 0; i < lbv_syxt_mblb.Items.Count; i++) { for (int j = 0; j < m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Count; j++) { if (lbv_syxt_mblb.Items[i].Text == m_OTSReport_Export.m_mbszclass.M_SYXT.list_lbv_syxt_mblb[j]) { //匹配到了 lbv_syxt_mblb.Items[i].Checked = true; } } } //颗粒列表信息 ck_kllb_xsmk.Checked = m_OTSReport_Export.m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk; ck_kllb_fjzt.Checked = m_OTSReport_Export.m_mbszclass.M_KLLBXX.b_ck_kllb_fjzt; tb_RemoveElements.Text = m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_kllb_qcys; numericMin.Value = Convert.ToInt32(m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_int_kllb_number); comboBox_p1.SelectedIndex = m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_sort_p1; comboBox_p2.SelectedIndex = m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_sort_p2; comboBox_p3.SelectedIndex = m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_sort_p3; string str = ""; for (int i = 0; i < m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Count; i++) { if (str == "") { str = str + m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass[i]; } else { str = str + "," + m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass[i]; } } delete_Class.Text = str; //夹杂物占比 ck_jzwzb_surface.Checked = m_OTSReport_Export.m_mbszclass.M_JZWZB.b_ck_surface;//夹杂物占比表 numericMin.Text = m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_int_kllb_number.ToString(); textBox1.Text = m_OTSReport_Export.m_mbszclass.M_DZ.Notes; LoadingIcon(); } private void LoadingIcon() { string route = System.IO.Directory.GetCurrentDirectory() + "\\Config\\ReportTemplate\\"+ m_OTSReport_Export.m_mbszclass.M_SY.LOGName; int lastIndex = route.LastIndexOf('/'); int lastIndexs = route.LastIndexOf('\\'); if (lastIndex != -1) { fileName = route.Substring(lastIndex + 1); } else if (lastIndexs != -1) { fileName = route.Substring(lastIndexs + 1); } Bitmap decoupledImage = DecoupleImageFromFile(route); pictureBox7.Image = (Image)decoupledImage.Clone(); decoupledImage.Dispose(); } public static Bitmap DecoupleImageFromFile(string imagePath) { Bitmap decoupledImage = null; try { // 从文件路径加载图片 using (Image originalImage = Image.FromFile(imagePath)) { // 创建一个新的Bitmap对象作为副本 decoupledImage = new Bitmap(originalImage); } } catch (Exception ex) { // 处理加载图片时可能出现的异常 Console.WriteLine("Error loading image: " + ex.Message); } // 返回副本图片,此时原始图片文件已经被断开 return decoupledImage; } /// ///绑定下拉框,指定绑定的位置 /// private void BindComboBox(ComboBox cbo, OTS_REPORT_PROP_GRID_ITEMS in_enum) { cbo.Items.Clear(); List list_str = new List(); switch (in_enum) { case OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE://计算方式 list_str = m_OTSReport_Export.m_ReportApp.m_rstDataMgr.GetSizeCalMethodTypeList(); break; case OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE://粒级表 list_str = m_OTSReport_Export.m_ReportApp.m_rstDataMgr.GetPartSizeFileList(); break; case OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE://数据类型,全部颗粒,分析颗粒 list_str = m_OTSReport_Export.m_ReportApp.m_rstDataMgr.ParticleRange(); break; case OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE://三元相图模板 list_str = m_OTSReport_Export.m_ReportApp.m_rstDataMgr.GetTriTemplateNameList(); break; case OTS_REPORT_PROP_GRID_ITEMS.PARTICE_LIST: list_str = m_OTSReport_Export.m_ReportApp.m_rstDataMgr.getTableData_INCA(); break; } for (int i = 0; i < list_str.Count; i++) { cbo.Items.Add(list_str[i]); } if (cbo.Items.Count > 0) cbo.SelectedIndex = 0; } /// /// 对选择的元素进行显示及选择的封装方法 /// /// private void SetPeriodicTableControl(TextBox in_tb, List in_list_str) { in_list_str.Clear(); //打开编辑元素列表窗体 OTSPeriodicTable.OTSPeriodicTableForm_Small opts = new OTSPeriodicTable.OTSPeriodicTableForm_Small(); //获取需要显示的元素列表,并转换成元素周期表窗体可接受的格式,传入---------------------- string str_xsys = in_tb.Text.Trim(); List list_str = new List(); string[] strs = str_xsys.Split(','); for (int i = 0; i < strs.Length; i++) { list_str.Add(strs[i]); } //清除元素周期表中所有的记录 opts.m_List_Periodic.Clear(); //将该分类下的元素添加到元素周期表窗体的List_periodic中 for (int i = 0; i < strs.Length; i++) { string str_ysm = strs[i]; Periodic ls_periodic = new Periodic(); ls_periodic = CListPeriodic.GetPeriodicByEleName( str_ysm); opts.m_List_Periodic.Add(ls_periodic); } //---------------------------------------------------------------------------------------- opts.ShowDialog(); //先清空元素 str_xsys = ""; //然后再将选择的元素,组合起来,返回显示到该窗体上 if (opts.m_List_Periodic.Count > 0) { for (int i = 0; i < opts.m_List_Periodic.Count; i++) { if (str_xsys == "") { str_xsys = opts.m_List_Periodic[i].Symbol; } else { str_xsys = str_xsys + "," + opts.m_List_Periodic[i].Symbol; } //同时将元素保存到字符串列表中 in_list_str.Add(opts.m_List_Periodic[i].Symbol); } } //再对选择的元素进行显示 in_tb.Text = str_xsys; } #endregion #region 相关控件事件 private void button6_Click(object sender, EventArgs e) { if (VerifyControlValue() == false) return; SaveTemplateParameters(); //保存到上次路径文件 SaveFileToXml(m_OTSReport_Export.m_mbszclass.M_DZ.route); this.Close(); } #endregion private void ck_jzwzb_surface_CheckedChanged(object sender, EventArgs e) { } private void button5_Click(object sender, EventArgs e) { SetPeriodicTableControl(tb_RemoveElements, m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_qcys); } private void button1217_Click(object sender, EventArgs e) { // 打开文件对话框以选择图片文件 using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.Filter = "Image Files|*.jpg;*.jpeg;*.png;*.bmp;*.gif"; if (openFileDialog.ShowDialog() == DialogResult.OK) { // 获取选中的文件路径 try { string filePath = openFileDialog.FileName; int lastIndex = filePath.LastIndexOf('/'); int lastIndexs = filePath.LastIndexOf('\\'); if (lastIndex != -1) { fileName = filePath.Substring(lastIndex + 1); } else if (lastIndexs != -1) { fileName = filePath.Substring(lastIndexs + 1); } Bitmap bitmap = (Bitmap)Image.FromFile(filePath).Clone(); pictureBox7.Image.Dispose(); pictureBox7.Image = (Image)bitmap.Clone(); if (!IsPathWithinDirectory(filePath, System.IO.Directory.GetCurrentDirectory() + "\\Config\\ReportTemplate")) { //Console.WriteLine("图片路径在指定的文件夹内。"); CopyPicture(filePath, System.IO.Directory.GetCurrentDirectory() + "\\Config\\ReportTemplate\\"); } //else //{ // Console.WriteLine("图片路径不在指定的文件夹内。"); //} //CopyPicture(filePath, System.IO.Directory.GetCurrentDirectory() + "\\Config\\ReportTemplate\\"); } catch { MessageBox.Show(table["image_opened"].ToString()); } } } } /// /// 复制图片指定路径 /// /// 源图片路径 /// 目标文件夹路径(确保文件夹存在,否则需要创建它) private void CopyPicture(string sourceImagePath,string targetFolderPath) { // 构造目标图片路径(如果图片名要改变,可以在这里指定新的名字) string targetImagePath = Path.Combine(targetFolderPath, Path.GetFileName(sourceImagePath)); // 确保目标文件夹存在 if (!Directory.Exists(targetFolderPath)) { Directory.CreateDirectory(targetFolderPath); } // 复制图片到目标路径 try { File.Copy(sourceImagePath, targetImagePath, true); // 第三个参数为true表示如果目标文件已存在,则覆盖它 } catch (Exception ex) { MessageBox.Show("图片复制失败:"+ ex.Message); } } public static bool IsPathWithinDirectory(string filePath, string directoryPath) { // 确保directoryPath以目录分隔符结尾 if (!directoryPath.EndsWith(Path.DirectorySeparatorChar.ToString())) { directoryPath += Path.DirectorySeparatorChar; } // 使用Path.GetFullPath来规范化路径,这样可以处理相对路径和当前目录等 string fullPath = Path.GetFullPath(filePath); string fullDirectoryPath = Path.GetFullPath(directoryPath); // 判断fullPath是否以fullDirectoryPath为前缀 return fullPath.StartsWith(fullDirectoryPath, StringComparison.OrdinalIgnoreCase); } private void ck_kllb_fjzt_CheckedChanged(object sender, EventArgs e) { if (!ck_kllb_xsmk.Checked) { ck_kllb_fjzt.Checked = false; } } private void ck_kllb_xsmk_CheckedChanged(object sender, EventArgs e) { if(!ck_kllb_xsmk.Checked) { ck_kllb_fjzt.Checked = false; } } private void ck_klcc_xsmk_CheckedChanged(object sender, EventArgs e) { if(!ck_klcc_xsmk.Checked) { checkBox1.Checked = false; checkBox2.Checked = false; } } private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (!ck_klcc_xsmk.Checked) { checkBox1.Checked = false; checkBox2.Checked = false; } } private void checkBox2_CheckedChanged(object sender, EventArgs e) { if (!ck_klcc_xsmk.Checked) { checkBox1.Checked = false; checkBox2.Checked = false; } } private void button7_Click(object sender, EventArgs e) { this.Close(); } private void label33_Click(object sender, EventArgs e) { } private void lbv_syxt_mblb_SelectedIndexChanged(object sender, EventArgs e) { } private void label112121_Click(object sender, EventArgs e) { } private void numericMin_ValueChanged(object sender, EventArgs e) { } private void button8_Click(object sender, EventArgs e) { List vs = new List(); string[] MainPriority = tb_ysfx_xsys.Text.Split(new char[] { ',' }); for (int i = 0; i < MainPriority.Length; i++) { if (tb_ysfx_xsys.Text.Split(',')[i] != "") vs.Add(MainPriority[i]); } ClassificationOrderAdjuster category = new ClassificationOrderAdjuster(vs); category.ShowDialog(); List ls = category.OutElementList; string str = ""; for (int i = 0; i < ls.Count; i++) { if (i == ls.Count - 1) { str = str + ls[i]; } else { str = str + ls[i] + ","; } } tb_ysfx_xsys.Text = str; } private void button3_Click(object sender, EventArgs e) { try { DataTable fieldData = fielddata.GetAreaByAllIncA(""); DataTable data = new DataTable(); data.Columns.Add("STDId"); data.Columns.Add("StrName"); for (int i = 0; i < fieldData.Rows.Count; i++) { if (Convert.ToInt32(fieldData.Rows[i]["TypeId"]) > 10) { DataRow dr = data.NewRow(); dr["STDId"] = fieldData.Rows[i]["TypeId"]; dr["StrName"] = fieldData.Rows[i]["TypeName"]; data.Rows.Add(dr); } } Category category = new Category(DeleteClass_Serial, data, true); category.ShowDialog(); if (category.IsModify) { //List ls = category.OutElementList; DeleteClass_Serial = category.vs.Copy(); var MainPriority = category.OutElementList.Copy(); m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial.Clear(); m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass_Serial = DeleteClass_Serial.Copy(); m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass = MainPriority.Copy(); string str = ""; for (int i = 0; i < MainPriority.Count; i++) { if (str == "") { str = str + MainPriority[i]; } else { str = str + "," + MainPriority[i]; } } delete_Class.Text = str; } } catch { } } } }