using Glorysoft.SECS.EQP; using Glorysoft.SECS.EQP.Common; using Glorysoft.SECS.EQP.Utilities; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Windows.Forms; using Glorysoft.EAP.Core.Constant; using ARI.EAP.HOST.SRD; using Glorysoft.SECS.EQP.Commands; using Glorysoft.SECS.EQP.Message; using ARI.EAP.HOST.Common; using System.Threading.Tasks; using ARI.EAP.HOST.Utilities; using ARI.EAP.HOST.MQ; using Glorysoft.SECSwell; using System.Data; using ExcelDataReader; using System.Threading; namespace ARI.EAP.HOST { public partial class MainForm : Form { public static List eqpContexts; public static Scenario scenario; public static Mq mq; private string previousEditValue; public MainForm() { InitializeComponent(); Configurations.conf = XmlSerializeUtil.Deserialize(File.ReadAllText(Constants.configuerPath)); eqpContexts = new List(); mq = new Mq(); Global.MF = this; } private void MainForm_Load(object sender, EventArgs e) { this.ConnectStatus.Text = EquipmentStatus.EqConnectState; this.MQStatus.Text = EquipmentStatus.MQstate; this.Text = Configurations.conf.connectSetting.equipmentName1; this.editIPaddress.Text = Configurations.conf.connectSetting.remoteIp; this.editDeviceID.Text = Configurations.conf.connectSetting.deviceId; this.editPort.Text = Configurations.conf.connectSetting.remotePort; VIDLoad(); EquipmentStatus.EapState = RunState.Run; this.Connect.PerformClick(); } #region IP等设置输入相关验证 private void editIPaddress_KeyPress(object sender, KeyPressEventArgs e) { int kc = (int)e.KeyChar; if ((kc < 48 || kc > 57) && kc != 8 && kc != 46) { e.Handled = true; } } private void editDeviceID_KeyPress(object sender, KeyPressEventArgs e) { int kc = (int)e.KeyChar; if ((kc < 48 || kc > 57) && kc != 8) { e.Handled = true; } } private void editPort_KeyPress(object sender, KeyPressEventArgs e) { int kc = (int)e.KeyChar; if ((kc < 48 || kc > 57) && kc != 8) { e.Handled = true; } } private void editIPaddress_Leave(object sender, EventArgs e) { if (JudgeIPFormat(editIPaddress.Text) == true) { IPError.Visible = false; } else { IPError.Visible = true; } } private void editDeviceID_Leave(object sender, EventArgs e) { if (JudgePortFormat(editDeviceID.Text) == true) { ErrorDeviceID.Visible = false; } else { ErrorDeviceID.Visible = true; } } private void editPort_Leave(object sender, EventArgs e) { if (JudgePortFormat(editPort.Text) == true) { ErrorPort.Visible = false; } else { ErrorPort.Visible = true; } } //IP地址合法性检测 public static bool JudgeIPFormat(string strJudgeString) { bool blnTest; bool _Result = true; System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"); blnTest = regex.IsMatch(strJudgeString); if (blnTest == true) { string[] strTemp = strJudgeString.Split(new char[] { '.' }); // textBox1.Text.Split(new char[] { ‘.’ }); int nDotCount = strTemp.Length - 1; //字符串中.的数量,若.的数量小于3,则是非法的ip地址 if (3 == nDotCount)//判断字符串中.的数量 { for (int i = 0; i < strTemp.Length; i++) { if (Convert.ToInt32(strTemp[i]) > 255) { //大于255则提示,不符合IP格式 _Result = false; } } } else { _Result = false; } } else {//输入非数字则提示,不符合IP格式 _Result = false; } return _Result; } //deviceID 和 Port 合法性检测 public static bool JudgePortFormat(string strJudgeString) { bool blnTest; System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("^[0-9]{1,5}$"); blnTest = regex.IsMatch(strJudgeString); return blnTest; } #endregion #region IP配置保存和取消 private void Save_Click(object sender, EventArgs e) { //配置出错时不进行保存 if (IPError.Visible == true || ErrorPort.Visible == true || ErrorDeviceID.Visible == true) { MessageBox.Show("Please check configuration", "NOTICE"); return; } Configurations.conf.connectSetting.deviceId = editDeviceID.Text; Configurations.conf.connectSetting.remoteIp = editIPaddress.Text; Configurations.conf.connectSetting.remotePort = editPort.Text; XmlSerializeUtil.Serializer(Configurations.conf); MessageBox.Show("Save Successful", "NOTICE"); } private void Cancle_Click(object sender, EventArgs e) { this.editIPaddress.Text = Configurations.conf.connectSetting.remoteIp; this.editDeviceID.Text = Configurations.conf.connectSetting.deviceId; this.editPort.Text = Configurations.conf.connectSetting.remotePort; IPError.Visible = false; ErrorDeviceID.Visible = false; ErrorPort.Visible = false; } #endregion #region 连接和断开连接点击事件 private void Connect_Click(object sender, EventArgs e) { try { EquipmentStatus.initStatus = false; if (SimulatorInfo.Instance.Context != null && SimulatorInfo.Instance.Context.IsConnected) { SimulatorInfo.Instance.Context.Close(); } EquipmentStatus.EqConnectState = ConnectState.connecting; ConnectThread(); } catch(Exception ee) { MessageBox.Show(ee.Message, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error); LoggerService.SYSLogger.Error(ee); } } private void Disconnect_Click(object sender, EventArgs e) { try { if (SimulatorInfo.Instance.Context != null && SimulatorInfo.Instance.Context.IsConnected) { SimulatorInfo.Instance.Context.Close(); } } catch (Exception ee) { MessageBox.Show(ee.Message, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error); LoggerService.SYSLogger.Error(ee); } } #endregion #region 指令点击事件 private void S1F3Request_Click(object sender, EventArgs e) { if (this.ConnectStatus.Text != ConnectState.connected) { return; } Command.S1F3Command(null); } private void S5F3_Click(object sender, EventArgs e) { if (this.ConnectStatus.Text != ConnectState.connected) { return; } S5F3Item item = new S5F3Item(); if (EquipmentStatus.S5F3 == "AlarmDisable") { item.ALED = 128; item.ALID = 0; Command.S5F3Command(item, null); } else { item.ALED = 0; item.ALID = 0; Command.S5F3Command(item, null); } } public void S5F3BottonUpdate(string name) { if (this.ConnectStatus.Text != ConnectState.connected) { return; } Action act = delegate { this.S5F3.Text = name; }; this.BeginInvoke(act); } private void S5F5_Click(object sender, EventArgs e) { if (this.ConnectStatus.Text != ConnectState.connected) { return; } Command.S5F5Command(); } private void S7F19_Click(object sender, EventArgs e) { if (this.ConnectStatus.Text != ConnectState.connected) { return; } Command.S7F19Command(); } private void S2F13_Click(object sender, EventArgs e) { if (this.ConnectStatus.Text != ConnectState.connected) { return; } Command.S2F13Command(); } private void Local_Click(object sender, EventArgs e) { if (this.ConnectStatus.Text != ConnectState.connected) { return; } try { S2F15Item item = new S2F15Item(); var content = Configurations.conf.commandContentCollection.findContent("S2F15_ControlState").content; foreach (string value in content) { EC ec = new EC(); var ecv = Configurations.conf.sRDConfiguration.findEC(value); ec.ECID = ecv.ecid; item.ECs.Add(ec); } item.ECs[0].ECV = 4; item.ECs[1].ECV = 4; int tag = 1; Command.S2F15Command(item, tag); } catch (Exception ex) { MessageBox.Show(ex.Message, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error); LoggerService.SYSLogger.Error(ex.Message); } } private void Remote_Click(object sender, EventArgs e) { if (this.ConnectStatus.Text != ConnectState.connected) { return; } try { S2F15Item item = new S2F15Item(); var content = Configurations.conf.commandContentCollection.findContent("S2F15_ControlState").content; foreach (string value in content) { EC ec = new EC(); var ecv = Configurations.conf.sRDConfiguration.findEC(value); ec.ECID = ecv.ecid; item.ECs.Add(ec); } item.ECs[0].ECV = 5; item.ECs[1].ECV = 5; int tag = 1; Command.S2F15Command(item, tag); } catch (Exception ex) { MessageBox.Show(ex.Message, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error); LoggerService.SYSLogger.Error(ex.Message); } } #endregion #region 窗口关闭事件 private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { if (EquipmentStatus.EqConnectState.Equals(ConnectState.connected)) { SimulatorInfo.Instance.Context.Close(); } mq.Close(); EquipmentStatus.socketClient.Disconnected(); EquipmentStatus.EapState = RunState.Stop; } #endregion #region log详细内容展示 private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { string eventName, eventContent; eventName = dataGridView1.CurrentRow.Cells[3].Value.ToString(); eventContent = dataGridView1.CurrentRow.Cells[4].Value.ToString(); LogForm LF = new LogForm(eventName, eventContent); Task.Run(() => { try { LF.ShowDialog(); } finally { LF.Dispose(); } }); } private void dataGridView2_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { string eventContent, eventName; eventContent = dataGridView2.CurrentRow.Cells[3].Value.ToString(); eventName = dataGridView2.CurrentRow.Cells[2].Value.ToString(); LogForm LF = new LogForm(eventName, eventContent); Task.Run(() => { try { LF.ShowDialog(); } finally { LF.Dispose(); } }); } #endregion #region 设备连接初始化 public void ConnectThread() { try { AppSettingsConf.Conf = JsonConvert.DeserializeObject(File.ReadAllText(ReCache.EapSettingsFilePath), new JsonSerializerSettings() { StringEscapeHandling = StringEscapeHandling.EscapeNonAscii }); SimulatorInfo.Instance.Scenarios = Configurations.conf.scenarioCollection; var eqpid = Configurations.conf.connectSetting.name; SimulatorInfo.Instance.Context = new SECSContext(eqpid, (short)Convert.ToInt32(Configurations.conf.connectSetting.deviceId), Configurations.conf.connectSetting.remoteIp, Convert.ToInt32(Configurations.conf.connectSetting.remotePort)); SimulatorInfo.Instance.Context.Open(); } catch (Exception ee) { LoggerService.SECSLogger.Error($"程序错误:{ee.Message}"); } } #endregion #region 界面log显示 /// /// addlog 的摘要说明 /// {transfer:Receive or Send; /// commandName:消息名称; /// type: 0为Primary消息,1为Secondary消息} /// public void addlog(SECSTransaction trans, string transfer, string commandName,int type) { string time = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string SxFy = (type == 0 ? $"S{trans.Primary.Stream}F{trans.Primary.Function}" : $"S{trans.Secondary.Stream}F{trans.Secondary.Function}"); Action act = delegate { int index = this.dataGridView1.Rows.Add(); this.dataGridView1.Rows[index].Cells[0].Value = time; this.dataGridView1.Rows[index].Cells[1].Value = SxFy; this.dataGridView1.Rows[index].Cells[2].Value = transfer; this.dataGridView1.Rows[index].Cells[3].Value = commandName; this.dataGridView1.Rows[index].Cells[4].Value = (type == 0 ? trans.Primary : trans.Secondary); this.dataGridView1.FirstDisplayedScrollingRowIndex = this.dataGridView1.Rows.Count - 1; //界面日志只保留一千行 if(this.dataGridView1.Rows.Count > 1000) { this.dataGridView1.Rows.RemoveAt(0); } }; this.BeginInvoke(act); } public void addMQlog(string time, string trans, string name,string content) { Action act = delegate { int index = this.dataGridView2.Rows.Add(); this.dataGridView2.Rows[index].Cells[0].Value = time; this.dataGridView2.Rows[index].Cells[1].Value = trans; this.dataGridView2.Rows[index].Cells[2].Value = name; this.dataGridView2.Rows[index].Cells[3].Value = content; this.dataGridView2.FirstDisplayedScrollingRowIndex = this.dataGridView2.Rows.Count - 1; //界面日志只保留一千行 if (this.dataGridView2.Rows.Count > 1000) { this.dataGridView2.Rows.RemoveAt(0); } }; this.BeginInvoke(act); } #endregion #region 界面连接状态显示 public void ConnectStatusSet(string value) { Action act = delegate { this.ConnectStatus.Text = value; }; this.BeginInvoke(act); } #endregion #region MQ界面连接状态显示 public void MQConnectStatusSet(string value) { Action act = delegate { this.MQStatus.Text = value; }; this.BeginInvoke(act); } #endregion #region 外部调用EAP界面各按钮接口 public void pushBotton(string buttonName) { try { ToolStripButton toolStripButton = null; ToolStripMenuItem toolStripMenuItem = null; if (buttonName.Equals("Connect")) { toolStripButton = (ToolStripButton)toolStrip1.Items.Find(buttonName, true)[0]; } else { toolStripMenuItem = (ToolStripMenuItem)toolStrip1.Items.Find(buttonName, true)[0]; } Action act = delegate { if (toolStripButton != null) toolStripButton.PerformClick(); if (toolStripMenuItem != null) toolStripMenuItem.PerformClick(); }; this.BeginInvoke(act); } catch(Exception e) { LoggerService.SYSLogger.Error(e); } } #endregion #region VID加载与保存 public void VIDLoad() { foreach(SV sv in Configurations.conf.sRDConfiguration.svs) { int index = this.dgv_sv.Rows.Add(); this.dgv_sv.Rows[index].Cells[0].Value = sv.svid; this.dgv_sv.Rows[index].Cells[1].Value = sv.name; this.dgv_sv.Rows[index].Cells[2].Value = sv.format; this.dgv_sv.Rows[index].Cells[3].Value = sv.min; this.dgv_sv.Rows[index].Cells[4].Value = sv.max; this.dgv_sv.Rows[index].Cells[5].Value = sv.defaultValue; this.dgv_sv.Rows[index].Cells[6].Value = sv.description; } foreach (DV dv in Configurations.conf.sRDConfiguration.dvs) { int index = this.dgv_dv.Rows.Add(); this.dgv_dv.Rows[index].Cells[0].Value = dv.dvid; this.dgv_dv.Rows[index].Cells[1].Value = dv.name; this.dgv_dv.Rows[index].Cells[2].Value = dv.format; this.dgv_dv.Rows[index].Cells[3].Value = dv.min; this.dgv_dv.Rows[index].Cells[4].Value = dv.max; this.dgv_dv.Rows[index].Cells[5].Value = dv.defaultValue; this.dgv_dv.Rows[index].Cells[6].Value = dv.description; } foreach (ECV ecv in Configurations.conf.sRDConfiguration.ecvs) { int index = this.dgv_ec.Rows.Add(); this.dgv_ec.Rows[index].Cells[0].Value = ecv.ecid; this.dgv_ec.Rows[index].Cells[1].Value = ecv.name; this.dgv_ec.Rows[index].Cells[2].Value = ecv.format; this.dgv_ec.Rows[index].Cells[3].Value = ecv.min; this.dgv_ec.Rows[index].Cells[4].Value = ecv.max; this.dgv_ec.Rows[index].Cells[5].Value = ecv.defaultValue; this.dgv_ec.Rows[index].Cells[6].Value = ecv.description; } } private void saveToolStripMenuItem_Click(object sender, EventArgs e) { var svs = new List(); var dvs = new List(); var ecvs = new List(); foreach(DataGridViewRow row in dgv_sv.Rows) { SV sv = new SV(); if (row.Cells[0].Value != null) sv.svid = uint.Parse(row.Cells[0].Value.ToString()); if (row.Cells[1].Value != null) sv.name = row.Cells[1].Value.ToString(); if (row.Cells[2].Value != null) sv.format = row.Cells[2].Value.ToString(); if (row.Cells[3].Value != null) sv.min = row.Cells[3].Value.ToString(); if (row.Cells[4].Value != null) sv.max = row.Cells[4].Value.ToString(); if (row.Cells[5].Value != null) sv.defaultValue = row.Cells[5].Value.ToString(); if (row.Cells[6].Value != null) sv.description = row.Cells[6].Value.ToString(); svs.Add(sv); } foreach (DataGridViewRow row in dgv_dv.Rows) { DV dv = new DV(); if (row.Cells[0].Value != null) dv.dvid = uint.Parse(row.Cells[0].Value.ToString()); if (row.Cells[1].Value != null) dv.name = row.Cells[1].Value.ToString(); if (row.Cells[2].Value != null) dv.format = row.Cells[2].Value.ToString(); if (row.Cells[3].Value != null) dv.min = row.Cells[3].Value.ToString(); if (row.Cells[4].Value != null) dv.max = row.Cells[4].Value.ToString(); if (row.Cells[5].Value != null) dv.defaultValue = row.Cells[5].Value.ToString(); if (row.Cells[6].Value != null) dv.description = row.Cells[6].Value.ToString(); dvs.Add(dv); } foreach (DataGridViewRow row in dgv_ec.Rows) { ECV ecv = new ECV(); if (row.Cells[0].Value != null) ecv.ecid = uint.Parse(row.Cells[0].Value.ToString()); if (row.Cells[1].Value != null) ecv.name = row.Cells[1].Value.ToString(); if (row.Cells[2].Value != null) ecv.format = row.Cells[2].Value.ToString(); if (row.Cells[3].Value != null) ecv.min = row.Cells[3].Value.ToString(); if (row.Cells[4].Value != null) ecv.max = row.Cells[4].Value.ToString(); if (row.Cells[5].Value != null) ecv.defaultValue = row.Cells[5].Value.ToString(); if (row.Cells[6].Value != null) ecv.description = row.Cells[6].Value.ToString(); ecvs.Add(ecv); } Configurations.conf.sRDConfiguration.svs = svs; Configurations.conf.sRDConfiguration.dvs = dvs; Configurations.conf.sRDConfiguration.ecvs = ecvs; XmlSerializeUtil.Serializer(Configurations.conf); MessageBox.Show("Save Successful", "NOTICE"); } private void createSVToolStripMenuItem_Click(object sender, EventArgs e) { int index = this.dgv_sv.Rows.Add(); dgv_sv.FirstDisplayedScrollingRowIndex = index; } private void createDVToolStripMenuItem_Click(object sender, EventArgs e) { int index = this.dgv_dv.Rows.Add(); dgv_dv.FirstDisplayedScrollingRowIndex = index; } private void createECToolStripMenuItem_Click(object sender, EventArgs e) { int index = this.dgv_ec.Rows.Add(); dgv_ec.FirstDisplayedScrollingRowIndex = index; } private void dgv_sv_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { previousEditValue = ""; if (this.dgv_sv.CurrentCell.Value != null) { previousEditValue = this.dgv_sv.CurrentCell.Value.ToString(); } } private void dgv_dv_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { previousEditValue = ""; if (this.dgv_dv.CurrentCell.Value != null) { previousEditValue = this.dgv_dv.CurrentCell.Value.ToString(); } } private void dgv_ec_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { previousEditValue = ""; if (this.dgv_ec.CurrentCell.Value != null) { previousEditValue = this.dgv_ec.CurrentCell.Value.ToString(); } } private void dgv_sv_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (this.dgv_sv.CurrentCell.ColumnIndex == 0) { if(this.dgv_sv.CurrentCell.Value == null || dgv_sv.CurrentCell.Value.ToString() == "") { this.dgv_sv.CurrentCell.Value = previousEditValue; dgv_sv.CancelEdit(); return; } foreach (DataGridViewRow row in dgv_sv.Rows) { if (row.Index == this.dgv_sv.CurrentCell.RowIndex) continue; if (row.Cells[0].Value.ToString() == this.dgv_sv.CurrentCell.Value.ToString()) { MessageBox.Show("VID重复"); this.dgv_sv.CurrentCell.Value = previousEditValue; dgv_sv.CancelEdit(); return; } } foreach (DataGridViewRow row in dgv_dv.Rows) { if (row.Cells[0].Value.ToString() == this.dgv_sv.CurrentCell.Value.ToString()) { MessageBox.Show("VID重复"); this.dgv_sv.CurrentCell.Value = previousEditValue; dgv_sv.CancelEdit(); return; } } foreach (DataGridViewRow row in dgv_ec.Rows) { if (row.Cells[0].Value.ToString() == this.dgv_sv.CurrentCell.Value.ToString()) { MessageBox.Show("VID重复"); this.dgv_sv.CurrentCell.Value = previousEditValue; dgv_sv.CancelEdit(); return; } } } } private void dgv_dv_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (this.dgv_dv.CurrentCell.ColumnIndex == 0) { if (this.dgv_dv.CurrentCell.Value == null || dgv_dv.CurrentCell.Value.ToString() == "") { this.dgv_dv.CurrentCell.Value = previousEditValue; dgv_dv.CancelEdit(); return; } foreach (DataGridViewRow row in dgv_sv.Rows) { if (row.Cells[0].Value.ToString() == this.dgv_dv.CurrentCell.Value.ToString()) { MessageBox.Show("VID重复"); this.dgv_dv.CurrentCell.Value = previousEditValue; dgv_dv.CancelEdit(); return; } } foreach (DataGridViewRow row in dgv_dv.Rows) { if (row.Index == this.dgv_dv.CurrentCell.RowIndex) continue; if (row.Cells[0].Value.ToString() == this.dgv_dv.CurrentCell.Value.ToString()) { MessageBox.Show("VID重复"); this.dgv_dv.CurrentCell.Value = previousEditValue; dgv_dv.CancelEdit(); return; } } foreach (DataGridViewRow row in dgv_ec.Rows) { if (row.Cells[0].Value.ToString() == this.dgv_dv.CurrentCell.Value.ToString()) { MessageBox.Show("VID重复"); this.dgv_dv.CurrentCell.Value = previousEditValue; dgv_dv.CancelEdit(); return; } } } } private void dgv_ec_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (this.dgv_ec.CurrentCell.ColumnIndex == 0) { if (this.dgv_ec.CurrentCell.Value == null || dgv_ec.CurrentCell.Value.ToString() == "") { this.dgv_ec.CurrentCell.Value = previousEditValue; dgv_ec.CancelEdit(); return; } foreach (DataGridViewRow row in dgv_sv.Rows) { if (row.Cells[0].Value.ToString() == this.dgv_ec.CurrentCell.Value.ToString()) { MessageBox.Show("VID重复"); this.dgv_ec.CurrentCell.Value = previousEditValue; dgv_ec.CancelEdit(); return; } } foreach (DataGridViewRow row in dgv_dv.Rows) { if (row.Cells[0].Value.ToString() == this.dgv_ec.CurrentCell.Value.ToString()) { MessageBox.Show("VID重复"); this.dgv_ec.CurrentCell.Value = previousEditValue; dgv_ec.CancelEdit(); return; } } foreach (DataGridViewRow row in dgv_ec.Rows) { if (row.Index == this.dgv_ec.CurrentCell.RowIndex) continue; if (row.Cells[0].Value.ToString() == this.dgv_ec.CurrentCell.Value.ToString()) { MessageBox.Show("VID重复"); this.dgv_ec.CurrentCell.Value = previousEditValue; dgv_ec.CancelEdit(); return; } } } } #endregion private void TabControl1_SelectedIndexChanged(object sender, EventArgs e) { if(this.TabControl1.SelectedIndex == 1) { this.editIPaddress.Text = Configurations.conf.connectSetting.remoteIp; this.editDeviceID.Text = Configurations.conf.connectSetting.deviceId; this.editPort.Text = Configurations.conf.connectSetting.remotePort; IPError.Visible = false; ErrorDeviceID.Visible = false; ErrorPort.Visible = false; } else if(this.TabControl1.SelectedIndex == 2) { this.dgv_sv.Rows.Clear(); this.dgv_dv.Rows.Clear(); this.dgv_ec.Rows.Clear(); VIDLoad(); } } #region VID删除 private void deleteSVToolStripMenuItem1_Click(object sender, EventArgs e) { this.dgv_sv.Rows.Remove(this.dgv_sv.CurrentRow); } private void deleteDVToolStripMenuItem_Click(object sender, EventArgs e) { this.dgv_dv.Rows.Remove(this.dgv_dv.CurrentRow); } private void deleteECVToolStripMenuItem_Click(object sender, EventArgs e) { this.dgv_ec.Rows.Remove(this.dgv_ec.CurrentRow); } #endregion private void s1F1ToolStripMenuItem_Click(object sender, EventArgs e) { if (this.s1F1ToolStripMenuItem.Checked) { EquipmentStatus.S1F1FuntionStatus = true; } else { EquipmentStatus.S1F1FuntionStatus = false; } } private void importDVListToolStripMenuItem_Click(object sender, EventArgs e) { using (var openFileDialog = new OpenFileDialog { Filter = @"Excel表格|*.xlsx|Excel|*.xls" }) { if (openFileDialog.ShowDialog() == DialogResult.OK) { using (var stream = File.Open(openFileDialog.FileName, FileMode.Open, FileAccess.Read)) { using (var reader = ExcelReaderFactory.CreateReader(stream)) { DataSet result = reader.AsDataSet(); DataTable dt = result.Tables[0]; foreach(DataRow row in dt.Rows) { int index = this.dgv_dv.Rows.Add(); this.dgv_dv.Rows[index].Cells[0].Value = row[0]; this.dgv_dv.Rows[index].Cells[1].Value = row[1]; this.dgv_dv.Rows[index].Cells[2].Value = row[2]; this.dgv_dv.Rows[index].Cells[3].Value = row[3]; this.dgv_dv.Rows[index].Cells[4].Value = row[4]; this.dgv_dv.Rows[index].Cells[5].Value = row[5]; this.dgv_dv.Rows[index].Cells[6].Value = row[6]; } } } } } } } public static class Global { public static MainForm MF{get;set;} } }