/// <summary> /// Конструктор класса /// </summary> public WorkForm() { InitializeComponent(); String[] str = ConSerialPort.Read().Split(';'); for (int i = 0; i < str.Length - 1; i++) { dataGridView.Rows.Add(); records.Add(new Record(str[i].Trim().Split(','), i)); dataGridView.Rows[i].Cells[0].Value = records[i].StartTime; dataGridView.Rows[i].Cells[1].Value = records[i].EndTime; dataGridView.Rows[i].Cells[2].Value = records[i].NumberDevice.ToString(); SetWeek(dataGridView.Rows[i], records[i].Week); dataGridView.Rows[i].Cells[10].Value = "Изменить"; dataGridView.Rows[i].Cells[11].Value = "Удалить"; dataGridView.Rows[i].ReadOnly = true; } dataGridView.ColumnHeadersDefaultCellStyle.Alignment = dataGridView.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; if (ConSerialPort.saveTimer > ConSerialPort.maxTimers) { AddButton.Enabled = false; } if (dataGridView.Rows.Count == 0) { deleteButton.Enabled = false; } }
/// <summary> /// Обработка закрытия формы /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ViewForm_FormClosed(object sender, FormClosedEventArgs e) { if (ConSerialPort.connected) { ConSerialPort.Disconnect(); } Form main = Application.OpenForms[0]; main.Close(); }
/// <summary> /// Обработка нажатия на кнопку "Удалить расписание" /// </summary> private void deleteButton_Click(object sender, EventArgs e) { ConSerialPort.DeleteAll(); while (dataGridView.Rows.Count > 0) { dataGridView.Rows.RemoveAt(0); } records.RemoveAll(rec => rec.NumTimer != 150); deleteButton.Enabled = false; }
private void MainForm_Shown(object sender, EventArgs e) { try { ConSerialPort.Connect(); if (ConSerialPort.connected) { Thread.Sleep(1000); WorkForm wf = new WorkForm(); wf.Show(); this.Hide(); } else { label.Text = "Не удалюсь подключиться, перезапустите программу."; } } catch { MessageBox.Show("Возникла ошибка", "Сохранение расписания", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Обработка клика по ячейкам таблицы /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) { try { var row = dataGridView.Rows[e.RowIndex]; var record = records.Find(r => r.NumTimer == e.RowIndex); // Выбор действия switch (e.ColumnIndex) { // Кнопка "Изменить / сохранить" case 10: Record saveRecord; switch (row.Cells[10].Value) { case "Изменить": row.Cells[10].Value = "Сохранить"; row.Cells[11].Value = "Отмена"; row.ReadOnly = false; break; case "Добавить": saveRecord = new Record(row); if ((saveRecord.EndTime.Subtract(saveRecord.StartTime).Ticks > 0) && (saveRecord.Week > 0)) { List <Record> mas1 = records.FindAll(rec => (saveRecord.NumberDevice == rec.NumberDevice) && ((saveRecord.Week & rec.Week) != 0) && (saveRecord.NumTimer != rec.NumTimer) ); List <Record> mas2 = mas1.FindAll(rec => ((saveRecord.StartTimeUnix < rec.EndTimeUnix) && (saveRecord.StartTimeUnix >= rec.StartTimeUnix)) || ((saveRecord.EndTimeUnix > rec.StartTimeUnix) && (saveRecord.EndTimeUnix <= rec.EndTimeUnix)) || ((saveRecord.StartTimeUnix < rec.StartTimeUnix) && (saveRecord.EndTimeUnix > rec.EndTimeUnix)) ); if (mas2.Count == 0) { if (ConSerialPort.EditData(0, saveRecord.getString())) { MessageBox.Show("Расписание сохранено", "Добавление расписания", MessageBoxButtons.OK, MessageBoxIcon.Information); records.Add(saveRecord); row.Cells[10].Value = "Изменить"; row.Cells[11].Value = "Удалить"; row.ReadOnly = true; Thread.Sleep(1000); if (ConSerialPort.saveTimer > ConSerialPort.maxTimers) { AddButton.Enabled = false; } if (dataGridView.Rows.Count != 0) { deleteButton.Enabled = true; } } else { MessageBox.Show("Возникла ошибка при добавлении", "Добавление расписания", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Расписание дублирует уже созданное", "Добавление расписания", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Введены неправильные данные", "Добавление расписания", MessageBoxButtons.OK, MessageBoxIcon.Error); } break; case "Сохранить": saveRecord = new Record(row); if ((saveRecord.EndTime.Subtract(saveRecord.StartTime).Ticks > 0) && (saveRecord.Week > 0)) { List <Record> mas1 = records.FindAll(rec => (saveRecord.NumberDevice == rec.NumberDevice) && ((saveRecord.Week & rec.Week) != 0) && (saveRecord.NumTimer != rec.NumTimer) ); List <Record> mas2 = mas1.FindAll(rec => ((saveRecord.StartTimeUnix < rec.EndTimeUnix) && (saveRecord.StartTimeUnix >= rec.StartTimeUnix)) || ((saveRecord.EndTimeUnix > rec.StartTimeUnix) && (saveRecord.EndTimeUnix <= rec.EndTimeUnix)) || ((saveRecord.StartTimeUnix < rec.StartTimeUnix) && (saveRecord.EndTimeUnix > rec.EndTimeUnix)) ); if (mas2.Count == 0) { if (ConSerialPort.EditData(1, saveRecord.getString())) { MessageBox.Show("Расписание изменено", "Изменение расписания", MessageBoxButtons.OK, MessageBoxIcon.Information); row.Cells[10].Value = "Изменить"; row.Cells[11].Value = "Удалить"; row.ReadOnly = true; records.Remove(record); records.Insert(saveRecord.NumTimer, saveRecord); Thread.Sleep(1000); } else { MessageBox.Show("Возникла ошибка при изменении", "Изменение расписания", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Расписание дублирует уже созданное", "Изменение расписания", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Введены неправильные данные", "Изменение расписания", MessageBoxButtons.OK, MessageBoxIcon.Error); } break; } break; // Кнопка "Удалить / отмена" case 11: switch (row.Cells[11].Value) { case "Удалить": if (ConSerialPort.Delete(e.RowIndex.ToString())) { var r = records.FindAll(rr => rr.NumTimer > e.RowIndex); records.Remove(record); records.ForEach(rec => rec.NumTimer = records.FindIndex(rr => rr == rec)); dataGridView.Rows.RemoveAt(e.RowIndex); MessageBox.Show("Расписание удалено", "Полное расписание", MessageBoxButtons.OK, MessageBoxIcon.Information); Thread.Sleep(1000); AddButton.Enabled = true; if (dataGridView.Rows.Count == 0) { deleteButton.Enabled = false; } } else { MessageBox.Show("Возникла ошибка при удалении", "Полное расписание", MessageBoxButtons.OK, MessageBoxIcon.Error); } break; case "Отмена": row.Cells[10].Value = "Изменить"; row.Cells[11].Value = "Удалить"; row.ReadOnly = true; row.Cells[0].Value = record.StartTime; row.Cells[1].Value = record.EndTime; row.Cells[2].Value = record.NumberDevice.ToString(); SetWeek(row, record.Week); break; case "Отменить": dataGridView.Rows.RemoveAt(e.RowIndex); break; } break; default: break; } } catch { } }