Files
fl-knowledge/LP/FormLook1PuTongJiSuan.cs

532 lines
18 KiB
C#

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<string> list = new List<string>();
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("<TGanTa>");
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("</TGanTa>");
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);
}
}