void PlatformComboBoxSelectedIndexChanged(object sender, EventArgs e)
 {
     if (!inUpdate)
     {
         inUpdate = true;
         if (platformComboBox.SelectedIndex == platformComboBoxEditIndex)
         {
             using (Form dlg = new EditAvailableConfigurationsDialog(solution, true)) {
                 dlg.ShowDialog(this);
             }
             UpdateAvailableSolutionConfigurationPlatforms();
         }
         UpdateGrid();
     }
 }
        void GridEditingControlSelectedIndexChanged(object sender, EventArgs e)
        {
            if (gridEditingControl.SelectedItem == EditTag.Instance)
            {
                DataGridViewComboBoxCell cell = grid.CurrentCell as DataGridViewComboBoxCell;
                if (cell == null)
                {
                    return;
                }
                Solution.ProjectConfigurationPlatformMatching matching = cell.Tag as Solution.ProjectConfigurationPlatformMatching;
                if (matching != null)
                {
                    inUpdate = true;
                    using (Form dlg = new EditAvailableConfigurationsDialog(matching.Project,
                                                                            cell.ColumnIndex != configurationColumn.Index))
                    {
                        dlg.ShowDialog(this);
                    }

                    grid.EndEdit();

                    inUpdate = true;

                    // end edit to allow updating the grid
                    grid.EndEdit();

                    // we need to change the current cell because otherwise UpdateGrid cannot change the
                    // list of combobox items in this cell
                    grid.CurrentCell = grid.Rows[cell.RowIndex].Cells[0];

                    // remove cell.Value because otherwise the grid view crashes in UpdateGrid
                    cell.Value = null;

                    UpdateAvailableSolutionConfigurationPlatforms();
                    UpdateGrid();
                }
            }
        }