using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Reflection; using System.Windows.Forms; namespace SHARP_CLAS_UI.Screen { public partial class Form_Parameter_Alarm_Setting : Form { Form_Frame _Parent; public System.Net.IPAddress _DBip = System.Net.IPAddress.Parse("127.0.0.1"); public string _DBid = "sa"; public string _DBPassword = "1234"; List AlarmList = new List(); List alarms = new List(); List defferentList = new List(); public Form_Parameter_Alarm_Setting(Form_Frame _Parent) { InitializeComponent(); this._Parent = _Parent; Init_DataGridView1(); } public void Set_Language() { try { if (dgv_Alarm_list != null) { //dgv_Alarm_list.Columns[0].HeaderText = resLanguage.Code; dgv_Alarm_list.Columns[1].HeaderText = resLanguage.DESCRIPTION; //dgv_Alarm_list.Columns[2].HeaderText = resLanguage.Heavy; //dgv_Alarm_list.Columns[3].HeaderText = resLanguage.Light; dgv_Alarm_list.Columns[4].HeaderText = resLanguage.USE; } } catch(Exception ex) { } } public void Init_DataGridView() { string connection_str = $"Server = {_DBip}; uid = {_DBid}; pwd = {_DBPassword}; database = SHARP_CLAS"; using (SqlConnection sqlcon = new SqlConnection(connection_str)) { try { sqlcon.Open(); SqlCommand scom = new SqlCommand(); scom.Connection = sqlcon; scom.CommandText = "Select * from Alarm"; AlarmList.Clear(); using (SqlDataReader sdr = scom.ExecuteReader()) { while (sdr.Read()) { AlarmList.Add(new AlarmInfo((int)sdr["Code"], (string)sdr["Name"], (string)sdr["Description"], (bool)sdr["Heavy"], (bool)sdr["Unused"])); } sdr.Close(); } dgv_Alarm_list.DataSource = AlarmList; int i = 0; foreach (DataGridViewColumn dgvc in dgv_Alarm_list.Columns) { if (i == 0) dgvc.Width = 100; else if (i == 1) dgvc.Width = 300; else if (i == 2) dgvc.Width = 1030; else if (i == 3) dgvc.Width = 100; else if (i == 4) dgvc.Width = 100; else if (i == 5) dgvc.Width = 100; i++; } foreach (DataGridViewColumn column in dgv_Alarm_list.Columns) { column.SortMode = DataGridViewColumnSortMode.NotSortable; } } catch (Exception ex) { dgv_Alarm_list.DataSource = AlarmList; int i = 0; foreach (DataGridViewColumn dgvc in dgv_Alarm_list.Columns) { if (i == 0) dgvc.Width = 100; else if (i == 1) dgvc.Width = 300; else if (i == 2) dgvc.Width = 1030; else if (i == 3) dgvc.Width = 100; else if (i == 4) dgvc.Width = 100; else if (i == 5) dgvc.Width = 100; i++; } foreach (DataGridViewColumn column in dgv_Alarm_list.Columns) { column.SortMode = DataGridViewColumnSortMode.NotSortable; } Console.WriteLine(ex.Message); } finally { sqlcon.Close(); } } } public void Init_DataGridView1() { try { //Datagridview Double Buffer 사용. Type dgvType = dgv_Alarm_list.GetType(); PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic); pi.SetValue(dgv_Alarm_list, true, null); //================================ alarms.Clear(); List alarm_datas = new List(Alarm_Manager.Instance.Clone().Values); foreach (Alarm alarm in alarm_datas) { alarms.Add(alarm); } dgv_Alarm_list.DataSource = alarms; int i = 0; foreach (DataGridViewColumn dgvc in dgv_Alarm_list.Columns) { if (i == 0) dgvc.Width = 500; else if (i == 1) dgvc.Width = 930; else if (i == 2) dgvc.Width = 100; else if (i == 3) dgvc.Width = 100; else if (i == 4) dgvc.Width = 100; i++; } foreach (DataGridViewColumn column in dgv_Alarm_list.Columns) { column.SortMode = DataGridViewColumnSortMode.NotSortable; } } catch (Exception ex) { dgv_Alarm_list.DataSource = alarms; int i = 0; foreach (DataGridViewColumn dgvc in dgv_Alarm_list.Columns) { if (i == 0) dgvc.Width = 500; else if (i == 1) dgvc.Width = 930; else if (i == 2) dgvc.Width = 100; else if (i == 3) dgvc.Width = 100; else if (i == 4) dgvc.Width = 100; i++; } foreach (DataGridViewColumn column in dgv_Alarm_list.Columns) { column.SortMode = DataGridViewColumnSortMode.NotSortable; } Console.WriteLine(ex.Message); } } private void dgv_Alarm_list_CellContentClick(object sender, DataGridViewCellEventArgs e) { switch (e.ColumnIndex) { case 1: { break; } case 2: { alarms[e.RowIndex].Set_Heavy(!alarms[e.RowIndex].Heavy); break; } case 3: { alarms[e.RowIndex].Set_Light(!alarms[e.RowIndex].Light); break; } case 4: { alarms[e.RowIndex].Set_Use(!alarms[e.RowIndex].Use); break; } } if (!alarms[e.RowIndex].Equal(Alarm_Manager.Instance.Alarm_List[alarms[e.RowIndex].Code])) { dgv_Alarm_list.Rows[e.RowIndex].DefaultCellStyle.BackColor = System.Drawing.Color.Red; if(!defferentList.Contains(e.RowIndex)) defferentList.Add(e.RowIndex); } else { dgv_Alarm_list.Rows[e.RowIndex].DefaultCellStyle.BackColor = System.Drawing.Color.Empty; defferentList.Remove(e.RowIndex); } dgv_Alarm_list.Refresh(); } private void btn_Save_Click(object sender, EventArgs e) { DateTime dt = DateTime.Now; foreach(Alarm alarm in alarms) { if(!Alarm_Manager.Instance.Alarm_List[alarm.Code].Equal(alarm)) { Alarm_Manager.Instance.Alarm_List[alarm.Code] = alarm.Clone(); } } Alarm_Manager.Instance.Save_Alarm_List(); dgv_Alarm_list_Refresh(); TimeSpan ts = DateTime.Now - dt; } private void btn_Reset_Click(object sender, EventArgs e) { foreach (int defferent in defferentList) { if(!alarms[defferent].Equal(Alarm_Manager.Instance.Alarm_List[alarms[defferent].Code])) { alarms[defferent] = Alarm_Manager.Instance.Alarm_List[alarms[defferent].Code].Clone(); dgv_Alarm_list.Rows[defferent].DefaultCellStyle.BackColor = System.Drawing.Color.Empty; } } dgv_Alarm_list_Refresh(); } private void dgv_Alarm_list_Refresh() { if (dgv_Alarm_list.FirstDisplayedCell == null) return; int rowindex = dgv_Alarm_list.FirstDisplayedCell.RowIndex; int code = (int)dgv_Alarm_list.SelectedRows[0].Cells[0].Value; foreach (int defferent in defferentList) { if (!alarms[defferent].Equal(Alarm_Manager.Instance.Alarm_List[alarms[defferent].Code])) { dgv_Alarm_list.Rows[defferent].DefaultCellStyle.BackColor = System.Drawing.Color.Red; } else { dgv_Alarm_list.Rows[defferent].DefaultCellStyle.BackColor = System.Drawing.Color.Empty; } } defferentList.Clear(); DateTime dt = DateTime.Now; dgv_Alarm_list.Refresh(); TimeSpan ts = (DateTime.Now - dt); dgv_Alarm_list.Rows[code].Selected = true; dgv_Alarm_list.FirstDisplayedScrollingRowIndex = rowindex; } } }