Start CL1.ColumnOrder = 1 CL2.ColumnOrder = 2 CL3.ColumnOrder = 3 programmatically change CL1.ColumnOrder=3 you have this result CL1.ColumnOrder = 3 CL2.ColumnOrder = 2 CL3.ColumnOrder = 1 NOW, if This.ActiveColumn is 3 the active column is CL1 but This.Columns[This.Columns[This.ActiveColumn].ColumnOrder] is CL1 Now, programmatically another change CL2.ColumnOrder=1 you have this result CL1.ColumnOrder = 3 CL2.ColumnOrder = 1 CL3.ColumnOrder = 2 NOW, if This.ActiveColumn is 1 the active column is CL2 but This.Columns[This.Columns[This.ActiveColumn].ColumnOrder] is CL3 !