public void ResizeColumn(int delta)
 {
     if (this.resizedColumn == null && this.resizedNode != null)
     {
         float constrainedWidth = this.resizedNode.GetConstrainedWidth(this.resizedNode.OriginalWidth + (float)delta);
         float num1             = this.resizedNode.Bounds.Width - constrainedWidth;
         float num2             = 0.0f;
         float num3             = 0.0f;
         float num4             = 0.0f;
         for (int index = this.resizedNode.Parent.Children.IndexOf(this.resizedNode) + 1; index < this.resizedNode.Parent.Children.Count; ++index)
         {
             num2 += this.resizedNode.Parent.Children[index].MinWidth;
             if ((double)num3 >= 0.0)
             {
                 num3 += this.resizedNode.Parent.Children[index].MaxWidth;
             }
             if ((double)this.resizedNode.Parent.Children[index].MaxWidth == 0.0)
             {
                 num3 = -1f;
             }
             num4 += this.resizedNode.Parent.Children[index].Bounds.Width;
         }
         if ((double)num4 + (double)num1 < (double)num2)
         {
             num1 = num2 - num4;
         }
         if ((double)num3 > 0.0 && (double)num4 + (double)num1 > (double)num3)
         {
             num1 = num3 - num4;
         }
         if (this.resizedNode.Parent == this.root && this.template.AutoSizeColumnsMode == GridViewAutoSizeColumnsMode.None)
         {
             this.resizedNode.Bounds.Width = constrainedWidth;
         }
         else
         {
             this.resizedNode.Bounds.Width = this.resizedNode.GetConstrainedWidth(this.resizedNode.Bounds.Width - num1);
         }
     }
     else
     {
         if (this.resizedColumn == null || this.resizedNode == null)
         {
             return;
         }
         ColumnGroupColumnData columnGroupColumnData = this.resizedNode.ColumnData[this.resizedColumn];
         float constrainedWidth1 = columnGroupColumnData.GetConstrainedWidth(columnGroupColumnData.OriginalWidth + (float)delta);
         float num1 = columnGroupColumnData.Bounds.Width - constrainedWidth1;
         float num2 = 0.0f;
         float num3 = 0.0f;
         float num4 = 0.0f;
         for (int index = this.resizedNode.Rows[columnGroupColumnData.Row].ColumnNames.IndexOf(this.resizedColumn.Name) + 1; index < this.resizedNode.Rows[columnGroupColumnData.Row].ColumnNames.Count; ++index)
         {
             GridViewColumn column = (GridViewColumn)this.template.Columns[this.resizedNode.Rows[columnGroupColumnData.Row].ColumnNames[index]];
             if (this.owner.ColumnIsVisible(column) || this.owner.IgnoreColumnVisibility)
             {
                 num2 += this.resizedNode.ColumnData[column].MinWidth;
                 if ((double)num3 >= 0.0)
                 {
                     num3 += this.resizedNode.ColumnData[column].MaxWidth;
                 }
                 if ((double)this.resizedNode.ColumnData[column].MaxWidth == 0.0)
                 {
                     num3 = -1f;
                 }
                 num4 += this.resizedNode.ColumnData[column].Bounds.Width;
             }
         }
         if ((double)num4 + (double)num1 < (double)num2)
         {
             num1 = num2 - num4;
         }
         if ((double)num3 > 0.0 && (double)num4 + (double)num1 > (double)num3)
         {
             num1 = num3 - num4;
         }
         float constrainedWidth2 = columnGroupColumnData.GetConstrainedWidth(columnGroupColumnData.Bounds.Width - num1);
         columnGroupColumnData.Bounds.Width = constrainedWidth2;
     }
 }
        private SizeF ArrangeGroupRow(
            GridViewColumnGroupRow row,
            ColumnGroupLayoutNode node,
            PointF location,
            float availableWidth)
        {
            float num1 = 0.0f;

            foreach (string columnName in (Collection <string>)row.ColumnNames)
            {
                GridViewColumn column = (GridViewColumn)this.template.Columns[columnName];
                if (this.owner.ColumnIsVisible(column) || this.owner.IgnoreColumnVisibility)
                {
                    ColumnGroupColumnData columnGroupColumnData = node.ColumnData[column];
                    num1 += columnGroupColumnData.OriginalWidth;
                }
            }
            float num2 = 0.0f;
            float num3 = (float)row.MinHeight;

            foreach (string columnName in (Collection <string>)row.ColumnNames)
            {
                GridViewColumn column = (GridViewColumn)this.template.Columns[columnName];
                if (this.owner.ColumnIsVisible(column) || this.owner.IgnoreColumnVisibility)
                {
                    ColumnGroupColumnData columnGroupColumnData = node.ColumnData[column];
                    if (this.resizedColumn != column)
                    {
                        columnGroupColumnData.Bounds.Width = columnGroupColumnData.GetConstrainedWidth(columnGroupColumnData.OriginalWidth * availableWidth / num1);
                    }
                    columnGroupColumnData.Bounds.Location = new PointF(location.X + num2, location.Y);
                    columnGroupColumnData.Bounds.Height   = (float)column.RowSpan;
                    num2           += columnGroupColumnData.Bounds.Width;
                    num3            = Math.Max(num3, columnGroupColumnData.Bounds.Height);
                    num1           -= columnGroupColumnData.OriginalWidth;
                    availableWidth -= columnGroupColumnData.Bounds.Width;
                    if (column is GridViewDataColumn)
                    {
                        this.SetColumnWidthInternal(column, (int)columnGroupColumnData.Bounds.Width);
                    }
                }
            }
            float width1 = 0.0f;

            foreach (string columnName in (Collection <string>)row.ColumnNames)
            {
                GridViewColumn column = (GridViewColumn)this.template.Columns[columnName];
                if (this.owner.ColumnIsVisible(column) || this.owner.IgnoreColumnVisibility)
                {
                    ColumnGroupColumnData columnGroupColumnData = node.ColumnData[column];
                    if (this.resizedColumn != column)
                    {
                        float width2 = columnGroupColumnData.Bounds.Width;
                        columnGroupColumnData.Bounds.Width = columnGroupColumnData.GetConstrainedWidth(columnGroupColumnData.Bounds.Width + availableWidth);
                        availableWidth -= columnGroupColumnData.Bounds.Width - width2;
                    }
                    columnGroupColumnData.Bounds.Location = new PointF(location.X + width1, location.Y);
                    width1 += columnGroupColumnData.Bounds.Width;
                    if (column is GridViewDataColumn)
                    {
                        column.SuspendPropertyNotifications();
                        this.SetColumnWidthInternal(column, (int)columnGroupColumnData.Bounds.Width);
                        column.ResumePropertyNotifications();
                    }
                }
            }
            return(new SizeF(width1, num3));
        }