Files
6150-HMI/CowainHmi/Alarm/FrmEditAlarmTable.cs

181 lines
7.2 KiB
C#
Raw Normal View History

2026-01-15 15:06:36 +08:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CowainHmi.Alarm
{
public partial class FrmEditAlarmTable : Form
{
private string excelFileName;
public FrmEditAlarmTable(string _excelFileName)
{
InitializeComponent();
this.excelFileName = _excelFileName;
}
private BindingList<PLCInfoModel.PLCAlarmInfo> alarmModels=new BindingList<PLCInfoModel.PLCAlarmInfo>();
private void FrmEditAlarmTable_Load(object sender, EventArgs e)
{
var excelDataTable = AlarmExcelHelper.ReadReleaseExcel(excelFileName,alarmModels);
alarmModels= AlarmExcelHelper.GetDataList<PLCInfoModel.PLCAlarmInfo>(excelDataTable);
dataGridView1.DataSource = alarmModels;
}
private void button1_Click(object sender, EventArgs e)
{
}
string selectAddress = "";
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0)
{
return;
}
//selectAddress = GetCellValueByRowColumnIndex(dataGridView1, e.RowIndex, "地址");
}
public string GetCellValueByRowColumnIndex(DataGridView dataGridView, int rowIndex, string columnName)
{
// 确保行号和DataGridView的行数在有效范围内
if (rowIndex < 0 || rowIndex >= dataGridView.Rows.Count)
{
throw new IndexOutOfRangeException("rowIndex is out of range.");
}
// 查找具有指定列名的列
DataGridViewColumn column = dataGridView.Columns.Cast<DataGridViewColumn>().FirstOrDefault(c => c.Name == columnName);
// 确保找到了列
if (column == null)
{
throw new ArgumentException("Column with specified name not found.", nameof(columnName));
}
// 获取单元格的值
// 注意这里使用rowIndex作为行索引column.Index作为列索引
// 因为DataGridViewCellCollection是基于列的索引来访问单元格的而不是直接使用列名
return dataGridView.Rows[rowIndex].Cells[column.Index].Value?.ToString() ?? string.Empty;
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
try
{
if (e.RowIndex < 0)
{
return;
}
var address = GetCellValueByRowColumnIndex(dataGridView1, e.RowIndex, "地址");
var rowInfo = alarmModels.Where(item => item. == address).FirstOrDefault();
if (rowInfo != null)
{
var previousList = AlarmExcelHelper.DeepCopyList<PLCInfoModel.PLCAlarmInfo>(alarmModels);
string previousAddress = rowInfo.;
FrmEditAlarmRecord frmEditAlarmRecord = new FrmEditAlarmRecord(rowInfo);
frmEditAlarmRecord.ShowDialog();
int count = previousList.Where(item => item. != previousAddress && item. == rowInfo.).Count();
if (count > 0)
{
rowInfo. = previousAddress;
MessageBox.Show("PLC地址冲突已回滚为以前的地址");
}
dataGridView1.Refresh();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnSave_Click(object sender, EventArgs e)
{
AlarmExcelHelper.SaveBindingListToExcel<PLCInfoModel.PLCAlarmInfo>(alarmModels, excelFileName);
MessageBox.Show("保存成功");
}
public static int rowCount;
private void button3_Click(object sender, EventArgs e)
{
//int rowCount = 1;
AddRowCount addRowCount = new AddRowCount();
addRowCount.ShowDialog();
for (int i = 0; i < rowCount; i++)
{
PLCInfoModel.PLCAlarmInfo rowInfo = new PLCInfoModel.PLCAlarmInfo();
rowInfo.=Guid.NewGuid().ToString().Substring(0,8);
alarmModels.Add(rowInfo);
}
dataGridView1.Refresh();
//PLCInfoModel.PLCAlarmInfo rowInfo = new PLCInfoModel.PLCAlarmInfo();
//int count=alarmModels.Where(item => item.地址==rowInfo.地址).Count();
//if (count>0)
//{
// MessageBox.Show("有新增加的行没有更改,请先修改!");
// return;
//}
//alarmModels.Add(rowInfo);
//var previousList = AlarmExcelHelper.DeepCopyList<PLCInfoModel.PLCAlarmInfo>(alarmModels);
//string previousAddress = rowInfo.地址;
//FrmEditAlarmRecord frmEditAlarmRecord = new FrmEditAlarmRecord(rowInfo);
//frmEditAlarmRecord.ShowDialog();
//count = previousList.Where(item => item.地址 != previousAddress && item.地址 == rowInfo.地址).Count();
//if (count > 0)
//{
// rowInfo.地址 = previousAddress;
// MessageBox.Show("PLC地址冲突已回滚为以前的地址");
//}
//dataGridView1.Refresh();
}
private void button4_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
// 显示确认对话框
var result = MessageBox.Show("确定要删除选中的行吗?", "确认删除", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (result != DialogResult.Yes)
{
return;
}
// 遍历所有选中行并删除
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
// 如果行不是新行(未保存的行),则删除
if (!row.IsNewRow && row.Index>=0)
{
//dataGridView1.Rows.Remove(row);
selectAddress = GetCellValueByRowColumnIndex(dataGridView1, row.Index, "地址");
var deleteItem = alarmModels.Where(item => item. == selectAddress).FirstOrDefault();
alarmModels.Remove(deleteItem);
}
}
dataGridView1.Refresh();
MessageBox.Show("删除成功!");
}
else
{
MessageBox.Show("请选择要删除的行。");
}
}
private void button2_Click(object sender, EventArgs e)
{
for (int i = 0; i < alarmModels.Count; i++)
{
alarmModels[i]. = (i + 1).ToString();
}
dataGridView1.Refresh();
}
}
}