private void fg_BeforeDragColumn(object sender, C1.Win.C1FlexGrid.DragRowColEventArgs e) { // get range with merged columns CellRange rg = fg.GetMergedRange(_rowDown, e.Col); // calculate parameters to move column range int indexOld = rg.LeftCol; int indexNew = e.Position; int count = rg.RightCol - rg.LeftCol + 1; if (indexOld < indexNew) { indexNew = indexNew - count + 1; } // move column range fg.Cols.MoveRange(indexOld, count, indexNew); // cancel default processing, we're done e.Cancel = true; }