using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Text; using System.Threading; using System.Windows.Forms; namespace LP; public class FormLook1PuTongJiSuan : Form { private delegate void delegateFormTitle(Form form, string value); private delegate void delegateDataGridViewDataSource(DataGridView dataGridView, DataView value); private delegate void delegateFormHide(Form form); public FormDesktop desktop = null; private string mTitle = ""; private TaskData mLookTaskData = null; private XianLuData mLookXianLuData = null; private TaskGroup mLookTaskGroup = null; private DataSet mDS = null; private string mFileName = ""; private int mIndex_detail_Look1 = -1; private bool mAfterInit = false; private IContainer components = null; private Panel panel_Form; private Panel panel_Result; private DataGridView dataGridView_Result; private Button buttonCancel; private Button buttonExport; public FormLook1PuTongJiSuan() { InitializeComponent(); mTitle = "展示计算结果(普通计算)"; } public void MySet_mIndex_detail_Look1(int _index) { mIndex_detail_Look1 = _index; } private void FormLook1PuTongJiSuan_Load(object sender, EventArgs e) { mAfterInit = false; MyInput_Data(); MySet_Form_Title(this, ""); MyInit_DataSet(); if (mDS != null) { MySet_DataGridView_DataSource(dataGridView_Result, mDS.Tables[0].DefaultView); } mAfterInit = true; } private void FormLook1PuTongJiSuan_FormClosing(object sender, FormClosingEventArgs e) { MySet_DataGridView_DataSource(dataGridView_Result, null); } public void Destroy() { if (mDS != null) { if (mDS.Tables.Count > 0) { mDS.Tables[0].Rows.Clear(); mDS.Tables[0].Columns.Clear(); } mDS.Tables[0].Clear(); mDS.Clear(); mDS = null; } } public void MyInput_Data() { TaskDetail taskDetail = null; if (mIndex_detail_Look1 >= 0) { taskDetail = desktop.mTask.mListDetails[mIndex_detail_Look1]; mLookTaskData = taskDetail.mTaskData; mLookTaskGroup = taskDetail.mTaskGroup; for (int i = 0; i < desktop.mXL.mListXianLuData.Count; i++) { if (taskDetail.mXianLuID_Detail == desktop.mXL.mListXianLuData[i].mID_XianLu) { mLookXianLuData = desktop.mXL.mListXianLuData[i]; break; } } } taskDetail = null; mTitle = "展示计算结果(普通计算) - " + mLookTaskData.mName_Task + " | " + mLookXianLuData.mName_XianLu; if (mIndex_detail_Look1 < 0) { MyLog.AddLog($"FormLook1PuTongTuiJian.cs MyInput_Data() mIndex_detail_Look1={mIndex_detail_Look1}"); } } private void MyInit_DataSet() { if (mDS == null) { mDS = new DataSet(); } if (mDS.Tables.Count == 0) { mDS.Tables.Add(new DataTable()); } mDS.Tables[0].Rows.Clear(); mDS.Tables[0].Columns.Clear(); List list = new List(); list.Clear(); string[] array = new string[36] { "塔号", "杆塔模型", "塔形", "雷电流幅值a", "地面倾角1", "地闪密度", "波头时间/μs", "波尾时间/μs", "反击耐雷水平kA", "反击跳闸率(次/100km.a)", "绕击耐雷水平kA", "绕击跳闸率(次/100km.a)", "雷击风险等级", "A相绕击耐雷水平kA", "B相绕击耐雷水平kA", "C相绕击耐雷水平kA", "单相反击耐雷水平kA", "单相闪络相", "单相反击跳闸率(次/100km.a)", "双相反击耐雷水平kA", "双相闪络相", "双相反击跳闸率(次/100km.a)", "三相反击耐雷水平kA", "三相闪络相", "三相反击跳闸率(次/100km.a)", "四相反击耐雷水平kA", "四相闪络相", "四相反击跳闸率(次/100km.a)", "五相反击耐雷水平kA", "五相闪络相", "五相反击跳闸率(次/100km.a)", "六相反击耐雷水平kA", "六相闪络相", "六相反击跳闸率(次/100km.a)", "保护角", "普通计算结果" }; string[] array2 = new string[15] { "塔号", "杆塔模型", "塔形", "雷电流幅值a", "地面倾角1", "地闪密度", "波头时间/μs", "波尾时间/μs", "反击耐雷水平kA", "反击跳闸率(次/100km.a)", "绕击耐雷水平kA", "绕击跳闸率(次/100km.a)", "雷击风险等级", "保护角", "普通计算结果" }; string[] array3 = new string[33] { "塔号", "杆塔模型", "塔形", "雷电流幅值a", "地面倾角1", "地闪密度", "波头时间/μs", "波尾时间/μs", "绕击跳闸率(次/100km.a)", "雷击风险等级", "A相绕击耐雷水平kA", "B相绕击耐雷水平kA", "C相绕击耐雷水平kA", "单相反击耐雷水平kA", "单相闪络相", "单相反击跳闸率(次/100km.a)", "双相反击耐雷水平kA", "双相闪络相", "双相反击跳闸率(次/100km.a)", "三相反击耐雷水平kA", "三相闪络相", "三相反击跳闸率(次/100km.a)", "四相反击耐雷水平kA", "四相闪络相", "四相反击跳闸率(次/100km.a)", "五相反击耐雷水平kA", "五相闪络相", "五相反击跳闸率(次/100km.a)", "六相反击耐雷水平kA", "六相闪络相", "六相反击跳闸率(次/100km.a)", "保护角", "普通计算结果" }; string text = ""; TGanTas tGanTas = null; try { tGanTas = mLookTaskGroup.mListExTaskData[0].mTGanTas; } catch (Exception) { tGanTas = null; } if (tGanTas != null) { text = tGanTas.mListTGanTaData[0].mM1_Xiang_GanTa; text += tGanTas.mListTGanTaData[0].mM2_Xiang_GanTa; text += tGanTas.mListTGanTaData[0].mM3_Xiang_GanTa; text += tGanTas.mListTGanTaData[0].mM4_Xiang_GanTa; text += tGanTas.mListTGanTaData[0].mM5_Xiang_GanTa; text += tGanTas.mListTGanTaData[0].mM6_Xiang_GanTa; text = text.ToUpper(); } bool flag = false; flag = text.IndexOf("A") >= 0 || text.IndexOf("B") >= 0 || text.IndexOf("C") >= 0; try { if (!flag) { for (int i = 0; i < array2.Length; i++) { list.Add(array2[i]); } } else if (flag) { for (int j = 0; j < array3.Length; j++) { list.Add(array3[j]); } } for (int k = 0; k < list.Count; k++) { mDS.Tables[0].Columns.Add(list[k]); } DataRow dataRow = null; for (int l = 0; l < mLookTaskGroup.mListExTaskData.Count; l++) { if (mLookTaskGroup.mListExTaskData[l] == null || mLookTaskGroup.mListExTaskData[l].mTGanTas == null) { continue; } tGanTas = mLookTaskGroup.mListExTaskData[l].mTGanTas; for (int m = 0; m < tGanTas.mListTGanTaData.Count; m++) { dataRow = mDS.Tables[0].NewRow(); for (int n = 0; n < list.Count; n++) { switch (list[n]) { case "塔号": dataRow[n] = tGanTas.mListTGanTaData[m].mID_GanTa; break; case "杆塔模型": dataRow[n] = tGanTas.mListTGanTaData[m].mModel_GanTa; break; case "塔形": dataRow[n] = tGanTas.mListTGanTaData[m].mTaXing_GanTa; break; case "雷电流幅值a": dataRow[n] = tGanTas.mListTGanTaData[m].mCurrent_a_GanTa; break; case "地面倾角1": dataRow[n] = tGanTas.mListTGanTaData[m].mDMQJ1_GanTa; break; case "地闪密度": dataRow[n] = tGanTas.mListTGanTaData[m].mDSMD_GanTa; break; case "波头时间/μs": dataRow[n] = tGanTas.mListTGanTaData[m].mCurrentHeadTime_GanTa; break; case "波尾时间/μs": dataRow[n] = tGanTas.mListTGanTaData[m].mCurrentTailTime_GanTa; break; case "反击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mFJ_NLSP_GanTa; break; case "反击跳闸率(次/100km.a)": dataRow[n] = tGanTas.mListTGanTaData[m].mFJ_TZL_GanTa; break; case "绕击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mRJ_NLSP_GanTa; break; case "绕击跳闸率(次/100km.a)": dataRow[n] = tGanTas.mListTGanTaData[m].mRJ_TZL_GanTa; break; case "雷击风险等级": dataRow[n] = tGanTas.mListTGanTaData[m].mFXDJ_GanTa; break; case "A相绕击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mMA_RJ_NLSP_GanTa; break; case "B相绕击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mMB_RJ_NLSP_GanTa; break; case "C相绕击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mMC_RJ_NLSP_GanTa; break; case "单相反击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mM1_NLSP_GanTa; break; case "单相闪络相": dataRow[n] = tGanTas.mListTGanTaData[m].mM1_Xiang_GanTa; break; case "单相反击跳闸率(次/100km.a)": dataRow[n] = tGanTas.mListTGanTaData[m].mM1_TZL_GanTa; break; case "双相反击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mM2_NLSP_GanTa; break; case "双相闪络相": dataRow[n] = tGanTas.mListTGanTaData[m].mM2_Xiang_GanTa; break; case "双相反击跳闸率(次/100km.a)": dataRow[n] = tGanTas.mListTGanTaData[m].mM2_TZL_GanTa; break; case "三相反击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mM3_NLSP_GanTa; break; case "三相闪络相": dataRow[n] = tGanTas.mListTGanTaData[m].mM3_Xiang_GanTa; break; case "三相反击跳闸率(次/100km.a)": dataRow[n] = tGanTas.mListTGanTaData[m].mM3_TZL_GanTa; break; case "四相反击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mM4_NLSP_GanTa; break; case "四相闪络相": dataRow[n] = tGanTas.mListTGanTaData[m].mM4_Xiang_GanTa; break; case "四相反击跳闸率(次/100km.a)": dataRow[n] = tGanTas.mListTGanTaData[m].mM4_TZL_GanTa; break; case "五相反击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mM5_NLSP_GanTa; break; case "五相闪络相": dataRow[n] = tGanTas.mListTGanTaData[m].mM5_Xiang_GanTa; break; case "五相反击跳闸率(次/100km.a)": dataRow[n] = tGanTas.mListTGanTaData[m].mM5_TZL_GanTa; break; case "六相反击耐雷水平kA": dataRow[n] = tGanTas.mListTGanTaData[m].mM6_NLSP_GanTa; break; case "六相闪络相": dataRow[n] = tGanTas.mListTGanTaData[m].mM6_Xiang_GanTa; break; case "六相反击跳闸率(次/100km.a)": dataRow[n] = tGanTas.mListTGanTaData[m].mM6_TZL_GanTa; break; case "保护角": dataRow[n] = tGanTas.mListTGanTaData[m].m_BaoHuJiao; break; case "普通计算结果": dataRow[n] = tGanTas.mListTGanTaData[m].m_Result_PuTongJiSuan_GanTa; break; } } mDS.Tables[0].Rows.Add(dataRow); } } } catch (Exception ex2) { MyLog.AddLog("MyInit_DataSet() FormLook1 Exception=" + ex2.Message + "."); } } private void buttonCancel_Click(object sender, EventArgs e) { if (mAfterInit) { Thread thread = new Thread(MyCancel); thread.Start(); } } private void MyCancel() { MySet_Form_Title(this, "取消—"); MySet_Form_Title(this, "取消———"); base.DialogResult = DialogResult.Cancel; MyFormHide(this); } private void buttonExport_Click(object sender, EventArgs e) { if (mLookTaskGroup == null || mLookTaskGroup.mListExTaskData.Count == 0) { MyLog.AddLog($"buttonExport_Click() 杆塔数据无匹配:任务ID={mLookTaskGroup.mID_Task}"); MessageBox.Show("无杆塔数据可以导出!"); return; } SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.InitialDirectory = Application.StartupPath; saveFileDialog.Filter = "所有文件*.*|*.*|Excel文件(*.csv)|*.csv|Txt文件(*.txt)|*.txt"; saveFileDialog.FilterIndex = 2; if (saveFileDialog.ShowDialog(this) == DialogResult.OK) { mFileName = saveFileDialog.FileName; Thread thread = new Thread(MySave_TGanTas); thread.Start(); } } private void MySave_TGanTas() { TGanTaData tGanTaData = null; int num = 0; try { using FileStream fileStream = new FileStream(mFileName, FileMode.Create, FileAccess.Write, FileShare.None); using (StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8)) { streamWriter.WriteLine(""); for (int i = 0; i < mLookTaskGroup.mListExTaskData.Count; i++) { if (mLookTaskGroup.mListExTaskData[i] == null || mLookTaskGroup.mListExTaskData[i].mTGanTas == null) { continue; } for (int j = 0; j < mLookTaskGroup.mListExTaskData[i].mTGanTas.mListTGanTaData.Count; j++) { tGanTaData = mLookTaskGroup.mListExTaskData[i].mTGanTas.mListTGanTaData[j]; if (tGanTaData != null) { if (num == 0) { streamWriter.WriteLine(TGanTaData.MyHead_ToString()); } streamWriter.WriteLine(tGanTaData.MyToString()); num++; } } } streamWriter.WriteLine(""); streamWriter.Close(); } fileStream.Close(); } catch (Exception ex) { MyLog.AddLog("MySave_TGanTas() 异常=" + ex.Message); MessageBox.Show(ex.Message); } MessageBox.Show($"导出{num}条杆塔数据。文件名{mFileName}"); } public void MySet_Form_Title(Form form, string value) { if (form.InvokeRequired) { delegateFormTitle method = MySet_Form_Title; form.Invoke(method, form, value); } else { form.Text = mTitle + " " + value; } } public void MySet_DataGridView_DataSource(DataGridView dataGridView, DataView value) { if (dataGridView.InvokeRequired) { delegateDataGridViewDataSource method = MySet_DataGridView_DataSource; dataGridView.Invoke(method, dataGridView, value); } else { dataGridView.DataSource = value; } } public void MyFormHide(Form form) { try { if (form.InvokeRequired) { delegateFormHide method = MyFormHide; form.Invoke(method, form); } else { form.Hide(); } } catch (Exception) { } } protected override void Dispose(bool disposing) { if (disposing && components != null) { components.Dispose(); } base.Dispose(disposing); } private void InitializeComponent() { this.panel_Form = new System.Windows.Forms.Panel(); this.buttonCancel = new System.Windows.Forms.Button(); this.panel_Result = new System.Windows.Forms.Panel(); this.dataGridView_Result = new System.Windows.Forms.DataGridView(); this.buttonExport = new System.Windows.Forms.Button(); this.panel_Form.SuspendLayout(); this.panel_Result.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)this.dataGridView_Result).BeginInit(); base.SuspendLayout(); this.panel_Form.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.panel_Form.Controls.Add(this.buttonExport); this.panel_Form.Controls.Add(this.buttonCancel); this.panel_Form.Controls.Add(this.panel_Result); this.panel_Form.Dock = System.Windows.Forms.DockStyle.Fill; this.panel_Form.Location = new System.Drawing.Point(0, 0); this.panel_Form.Name = "panel_Form"; this.panel_Form.Size = new System.Drawing.Size(1476, 607); this.panel_Form.TabIndex = 0; this.buttonCancel.Font = new System.Drawing.Font("宋体", 10.5f, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 134); this.buttonCancel.Location = new System.Drawing.Point(1419, 563); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(50, 29); this.buttonCancel.TabIndex = 3; this.buttonCancel.Text = "取消"; this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.Click += new System.EventHandler(buttonCancel_Click); this.panel_Result.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panel_Result.Controls.Add(this.dataGridView_Result); this.panel_Result.Location = new System.Drawing.Point(10, 10); this.panel_Result.Name = "panel_Result"; this.panel_Result.Size = new System.Drawing.Size(1403, 583); this.panel_Result.TabIndex = 2; this.dataGridView_Result.AllowUserToAddRows = false; this.dataGridView_Result.AllowUserToDeleteRows = false; this.dataGridView_Result.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText; this.dataGridView_Result.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView_Result.Dock = System.Windows.Forms.DockStyle.Fill; this.dataGridView_Result.Location = new System.Drawing.Point(0, 0); this.dataGridView_Result.Name = "dataGridView_Result"; this.dataGridView_Result.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders; this.dataGridView_Result.RowTemplate.Height = 23; this.dataGridView_Result.Size = new System.Drawing.Size(1401, 581); this.dataGridView_Result.TabIndex = 1; this.buttonExport.Font = new System.Drawing.Font("宋体", 10.5f, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 134); this.buttonExport.Location = new System.Drawing.Point(1419, 272); this.buttonExport.Name = "buttonExport"; this.buttonExport.Size = new System.Drawing.Size(50, 29); this.buttonExport.TabIndex = 3; this.buttonExport.Text = "导出"; this.buttonExport.UseVisualStyleBackColor = true; this.buttonExport.Click += new System.EventHandler(buttonExport_Click); base.AutoScaleDimensions = new System.Drawing.SizeF(6f, 12f); base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; base.ClientSize = new System.Drawing.Size(1476, 607); base.Controls.Add(this.panel_Form); base.Name = "FormLook1PuTongJiSuan"; base.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "FormLook1PuTongJiSuan"; base.FormClosing += new System.Windows.Forms.FormClosingEventHandler(FormLook1PuTongJiSuan_FormClosing); base.Load += new System.EventHandler(FormLook1PuTongJiSuan_Load); this.panel_Form.ResumeLayout(false); this.panel_Result.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)this.dataGridView_Result).EndInit(); base.ResumeLayout(false); } }