private void ProcessExtendSelection(GridPanel panel, bool extend)
        {
            int startIndex = panel.Columns.GetDisplayIndex(panel.SelectionColumnAnchor);
            int endIndex = panel.Columns.GetDisplayIndex(_HitColumn);

            if (startIndex > endIndex)
            {
                int tempIndex = startIndex;
                startIndex = endIndex;
                endIndex = tempIndex;
            }

            if (panel.OnlyColumnsSelected(startIndex, endIndex) == false)
            {
                if (extend == false)
                    panel.ClearAll();

                int[] map = panel.Columns.DisplayIndexMap;

                for (int i = 0; i < map.Length; i++)
                {
                    GridColumn column = panel.Columns[map[i]];

                    if (column.Visible == true)
                    {
                        column.IsSelected =
                            (i >= startIndex && i <= endIndex);
                    }
                }
            }
        }