/// <summary> /// Обработчик события изменения текущего элемента в источнике данных разъемов процессоров /// </summary> private async void cPUSocketInfoBindingSource_CurrentChanged(object sender, EventArgs e) { var selectedItem = ((BindingSource)sender).Current as CPUSocketInfo; if (selectedItem != null) { try { _lastSelectedIndex = CpuSockets.IndexOf(selectedItem); CurrentSocket = await _ctx.GetCPUSocketByInfo(selectedItem); cpuSocketBindingSource.DataSource = CurrentSocket; } catch { } } }
/// <summary> /// Обработчик события нажатия клавиши мыши на графический объект, /// который производит поиск разъема по наименованию и/или производителю /// </summary> private void picBtn_FindByCondition_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(textBox_ConditionToFind.Text) && comboBox_ManufacturersToFind.SelectedIndex < 0) { MessageBox.Show("Введите условие для поиска разъема процессора!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } CPUSocketInfo firstFoundedElement = null; if (!string.IsNullOrWhiteSpace(textBox_ConditionToFind.Text) && comboBox_ManufacturersToFind.SelectedIndex >= 0) { firstFoundedElement = CpuSockets. FirstOrDefault(x => x.Socket.ToUpper().Contains(textBox_ConditionToFind.Text.ToUpper()) && x.Manufacturer.Equals((manufaturerToFindBS.Current as Manufacturer).Name)); } else if (!string.IsNullOrWhiteSpace(textBox_ConditionToFind.Text)) { firstFoundedElement = CpuSockets.FirstOrDefault(x => x.Socket.ToUpper().Contains(textBox_ConditionToFind.Text.ToUpper())); } else if (comboBox_ManufacturersToFind.SelectedIndex >= 0) { firstFoundedElement = CpuSockets. FirstOrDefault(x => x.Manufacturer.Equals((manufaturerToFindBS.Current as Manufacturer).Name)); } if (firstFoundedElement != null) { cPUSocketInfoBindingSource.Position = CpuSockets.IndexOf(firstFoundedElement); } else { MessageBox.Show("Не удалось найти разъем процессора по указанному условию!", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
/// <summary> /// Обработчик события нажатия клавиши мыши на кнопку, /// который выполняет сохранение изменений /// </summary> private async void btn_Save_Click(object sender, EventArgs e) { if (_formMode != FormMode.None) { try { var selectedManufacturer = manufacturerBindingSource.Current as Manufacturer; if (selectedManufacturer == null || string.IsNullOrWhiteSpace(CurrentSocket.Name)) { MessageBox.Show("Заполните все поля перед сохранением!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } bool existed = false; switch (_formMode) { case FormMode.Add: existed = await _ctx.CheckCpuSocketForDublicate(CurrentSocket.Name, selectedManufacturer.Name); break; case FormMode.Edit: existed = await _ctx.CheckCpuSocketForDublicate(CurrentSocket.Name, selectedManufacturer.Name) && (!CurrentSocket.Name.Equals(_socketNameBeforeEdit) || !selectedManufacturer.Name.Equals(_socketManufacturerBeforeEdit)); break; } if (existed) { MessageBox.Show("Разъем с таким производителем и наименованием уже существует!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } switch (_formMode) { case FormMode.Add: await _ctx.AddNewCPUSocket(CurrentSocket); break; case FormMode.Edit: await _ctx.EditCPUSocket(CurrentSocket); break; } EnDisFields(false); if (_formMode == FormMode.Add) { CpuSockets.Add(new CPUSocketInfo { Socket = CurrentSocket.Name, Manufacturer = selectedManufacturer.Name }); } else { BindCollection(); } _formMode = FormMode.None; Edited = true; MessageBox.Show("Изменения успешно сохранены!", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch { MessageBox.Show("Изменения не удалось сохранить!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }