Files
6150-HMI/CowainHmi/Alarm/FrmEditAlarmTable.cs
2026-01-15 15:06:36 +08:00

181 lines
7.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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();
}
}
}