コード例 #1
0
        /// <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
                {
                }
            }
        }
コード例 #2
0
        /// <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);
            }
        }
コード例 #3
0
        /// <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);
                }
            }
        }