/// <summary>
 /// Блокировка ячейки в таблице "Вакансии"
 /// при завершении редактирования ячейки
 /// Обновление данных после изменения
 /// </summary>
 private void dataGridVacancies_CellEndEdit(object sender, DataGridViewCellEventArgs e)
 {
     dataGridVacancies.ReadOnly = true;
     try
     {
         //Преобразование комбобоксов назад в обычное поле после редактирования
         if (dataGridVacancies.Rows[e.RowIndex].Cells[e.ColumnIndex].GetType() == typeof(DataGridViewComboBoxCell))
         {
             DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell();
             cell.Value = dataGridVacancies.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
             //Данная заплатка используется для того, чтобы избежать бесконечного цикла
             //Сотрудники компании Microsoft не имеют другого выхода как запускать асинхронно метод
             this.BeginInvoke(new MethodInvoker(() =>
             {
                 dataGridVacancies.Rows[e.RowIndex].Cells[e.ColumnIndex] = cell;
             }));
         }
         if (e.ColumnIndex == 2)
         {
             throw new Exception("Для изменения работодателя воспользуйтесь\nсоответствующей вкладкой");
         }
         ViewVacancy.ChangeVacancy(
             dataGridVacancies.Rows[e.RowIndex].Cells[2].Value.ToString(),       //Имя работодателя
             (e.ColumnIndex == 0) ?
             DataBeforeEditing :
             dataGridVacancies.Rows[e.RowIndex].Cells[0].Value.ToString(),                   //Старое имя вакансии
             dataGridVacancies.Rows[e.RowIndex].Cells[1].Value.ToString(),                   //Специальность
             dataGridVacancies.Rows[e.RowIndex].Cells[0].Value.ToString(),                   //Новое имя вакансии
             Convert.ToUInt32(dataGridVacancies.Rows[e.RowIndex].Cells[3].Value.ToString()), //Новый опыт работы
             dataGridVacancies.Rows[e.RowIndex].Cells[4].Value.ToString(),                   //Новый тип занятости
             Convert.ToUInt32(dataGridVacancies.Rows[e.RowIndex].Cells[5].Value.ToString()), //Новая зарплата
             dataGridVacancies.Rows[e.RowIndex].Cells[6].Value.ToString());                  //Новое описание
     }
     catch (Exception err)
     {
         MessageBox.Show(err.Message);
         //MessageBox.Show("Ошибка при изменении данных");
     }
     //Обновить информацию после изменения
     UpdateVacancies(this.textBoxSearchVacancy.Text);
 }