private void menuColumnAdd_Click(object sender, EventArgs e) { if (AllowEditColumn == false) { return; } if (SelectedColumns.Count == 0) { return; } bool isLeft; if (sender == menuColumnAddOnLeft) { isLeft = true; } else if (sender == menuColumnAddOnRight) { isLeft = false; } else { return; } GridOilColumnGroup lastColumn = null; List <DataGridViewUndoRedoValue> updatedValues = null; if (columnList.FixColumnCount > 0) { lastColumn = columnList.LastOrDefault(); updatedValues = GetColumnUndoRedoValues(lastColumn); lastColumn.Remove(); } List <GridOilColumnGroup> groups = new List <GridOilColumnGroup>(); foreach (DataGridViewColumn c in SelectedColumns) { if (c is GridOilColumnItem) { groups.Add((c as GridOilColumnItem).Group); } } groups.Distinct(); int index = 0; if (groups.Count > 0) { if (isLeft) { index = groups.Min(o => o.Index); } else { index = groups.Max(o => o.Index) + 1; } } else { index = columnList.Count; } var g = columnList.Insert(index); if (columnList.FixColumnCount < 0) { undoRedoManager.DoAddColumn(g); } else { undoRedoManager.DoChangeColumn(lastColumn, g, updatedValues); } needSave = true; }