using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Reflection; using SA_LTT.Alarm; using SA_LTT; namespace SA_LTT_UI.Screen { public partial class ScreenAlarmSetting : UserControl { private MainFrame _mainFrame; List alarms = new List(); List changedAlarms = new List(); public ScreenAlarmSetting(MainFrame mainFrame) { InitializeComponent(); _mainFrame = mainFrame; changedAlarms.Clear(); RefreshAlarmInfoDataGridView(); } public void RefreshAlarmInfoDataGridView() { try { //Datagridview Double Buffer 사용. Type dgvType = dgv_AlarmInfos.GetType(); PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic); pi.SetValue(dgv_AlarmInfos, true, null); //================================ alarms.Clear(); alarms.AddRange(_mainFrame.equipment.alarmManager.GetAlarms().Values); dgv_AlarmInfos.DataSource = alarms; dgv_AlarmInfos.Columns["Code"].Width = 400; dgv_AlarmInfos.Columns["Code"].ReadOnly = false; dgv_AlarmInfos.Columns["Description"].Width = 1140; dgv_AlarmInfos.Columns["Heavy"].Width = 50; dgv_AlarmInfos.Columns["Light"].Width = 50; dgv_AlarmInfos.Columns["Level"].Visible = false; dgv_AlarmInfos.Columns["Use"].Width = 50; dgv_AlarmInfos.Columns["OccurredTime"].Width = 200; dgv_AlarmInfos.Columns["OccurredTime"].ReadOnly = false; foreach (DataGridViewColumn column in dgv_AlarmInfos.Columns) { column.SortMode = DataGridViewColumnSortMode.NotSortable; } foreach (DataGridViewRow row in dgv_AlarmInfos.Rows) { row.DefaultCellStyle.BackColor = Color.White; } dgv_AlarmInfos.Refresh(); } catch (Exception e) { EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); } } private void dgv_AlarmInfos_CellValueChanged_1(object sender, DataGridViewCellEventArgs e) { int rowIndex = e.RowIndex; Alarm alarm = _mainFrame.equipment.alarmManager.GetAlarms()[alarms[rowIndex].Code].Clone(); if (alarm == alarms[rowIndex]) { if (changedAlarms.Exists(x => x == alarm.Code)) { changedAlarms.Remove(alarm.Code); } dgv_AlarmInfos.Rows[rowIndex].DefaultCellStyle.BackColor = Color.White; } else { if (changedAlarms.Exists(x => x == alarm.Code) == false) { changedAlarms.Add(alarm.Code); } dgv_AlarmInfos.Rows[rowIndex].DefaultCellStyle.BackColor = Color.Red; } } private void btn_Cancel_Click(object sender, EventArgs e) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); changedAlarms.Clear(); RefreshAlarmInfoDataGridView(); } private void btn_Save_Click(object sender, EventArgs e) { if (MessageBox.Show("변경사항을 저장 하시겠습니까?", "확인", MessageBoxButtons.YesNo) == DialogResult.Yes) { EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); _mainFrame.equipment.alarmManager.Save(alarms); RefreshAlarmInfoDataGridView(); } } } }