private bool AutoResizeColumnInternal(int columnIndex, DataGridViewAutoSizeColumnCriteriaInternal autoSizeColumnCriteriaInternal, bool fixedHeight) { Debug.Assert(autoSizeColumnCriteriaInternal == DataGridViewAutoSizeColumnCriteriaInternal.Header || autoSizeColumnCriteriaInternal == DataGridViewAutoSizeColumnCriteriaInternal.AllRows || autoSizeColumnCriteriaInternal == DataGridViewAutoSizeColumnCriteriaInternal.DisplayedRows || autoSizeColumnCriteriaInternal == (DataGridViewAutoSizeColumnCriteriaInternal.Header | DataGridViewAutoSizeColumnCriteriaInternal.AllRows) || autoSizeColumnCriteriaInternal == (DataGridViewAutoSizeColumnCriteriaInternal.Header | DataGridViewAutoSizeColumnCriteriaInternal.DisplayedRows)); Debug.Assert(columnIndex >= 0 && columnIndex < this.Columns.Count); Debug.Assert(autoSizeColumnCriteriaInternal != DataGridViewAutoSizeColumnCriteriaInternal.Header || this.ColumnHeadersVisible); if (!this.IsHandleCreated) { // auto sizing causes handle creation. // don't create the handle inside InitializeComponent because that causes problems w/ data binding this.dataGridViewState2[DATAGRIDVIEWSTATE2_autoSizedWithoutHandle] = true; return false; } bool ret = false; // No autosizing occurs by default. try { this.noAutoSizeCount++; // Use of WindowsFormsUtils.CreateMeasurementGraphics() avoid use of this.Handle // IntPtr handle = this.Handle; // Force creation of control's handle because for databound grids, handle creation wipes out and recreates the columns. // Note: Even none-resizable column can programmatically be resized. DataGridViewColumn dataGridViewColumn = this.Columns[columnIndex]; int preferredColumnWidth = dataGridViewColumn.GetPreferredWidth((DataGridViewAutoSizeColumnMode) autoSizeColumnCriteriaInternal, fixedHeight); if (preferredColumnWidth < dataGridViewColumn.MinimumThickness) { preferredColumnWidth = dataGridViewColumn.MinimumThickness; } if (preferredColumnWidth > DataGridViewBand.maxBandThickness) { preferredColumnWidth = DataGridViewBand.maxBandThickness; } if (preferredColumnWidth != dataGridViewColumn.Thickness) { if (dataGridViewColumn.InheritedAutoSizeMode == DataGridViewAutoSizeColumnMode.Fill) { AdjustFillingColumn(dataGridViewColumn, preferredColumnWidth); } else { this.Columns[columnIndex].ThicknessInternal = preferredColumnWidth; } ret = true; } } finally { Debug.Assert(this.noAutoSizeCount > 0); this.noAutoSizeCount--; } return ret; }
private bool AdjustExpandingColumns(DataGridViewAutoSizeColumnCriteriaInternal autoSizeColumnCriteriaFilter, int rowIndex) { Debug.Assert(autoSizeColumnCriteriaFilter != DataGridViewAutoSizeColumnCriteriaInternal.None); Debug.Assert((autoSizeColumnCriteriaFilter & DataGridViewAutoSizeColumnCriteriaInternal.Fill) == 0); bool ret = false; // No column autosizes by default DataGridViewColumn dataGridViewColumn = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible); while (dataGridViewColumn != null) { DataGridViewAutoSizeColumnCriteriaInternal inheritedAutoSizeColumnCriteria = (DataGridViewAutoSizeColumnCriteriaInternal)dataGridViewColumn.InheritedAutoSizeMode; DataGridViewAutoSizeColumnCriteriaInternal autoSizeColumnCriteriaFiltered = (inheritedAutoSizeColumnCriteria & autoSizeColumnCriteriaFilter); if (autoSizeColumnCriteriaFiltered != 0) { ret |= AdjustExpandingColumn(dataGridViewColumn, rowIndex); } dataGridViewColumn = this.Columns.GetNextColumn(dataGridViewColumn, DataGridViewElementStates.Visible, DataGridViewElementStates.None); } return ret; }
private bool AutoResizeAllVisibleColumnsInternal(DataGridViewAutoSizeColumnCriteriaInternal autoSizeColumnCriteriaFilter, bool fixedHeight) { Debug.Assert(autoSizeColumnCriteriaFilter != DataGridViewAutoSizeColumnCriteriaInternal.None); Debug.Assert((autoSizeColumnCriteriaFilter & DataGridViewAutoSizeColumnCriteriaInternal.Fill) == 0); bool ret = false; // No column autosizes by default DataGridViewColumn dataGridViewColumn = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible); while (dataGridViewColumn != null) { DataGridViewAutoSizeColumnCriteriaInternal inheritedAutoSizeColumnCriteria = (DataGridViewAutoSizeColumnCriteriaInternal) dataGridViewColumn.InheritedAutoSizeMode; DataGridViewAutoSizeColumnCriteriaInternal autoSizeColumnCriteriaFiltered = (inheritedAutoSizeColumnCriteria & autoSizeColumnCriteriaFilter); if (autoSizeColumnCriteriaFiltered != 0) { ret |= AutoResizeColumnInternal(dataGridViewColumn.Index, inheritedAutoSizeColumnCriteria, fixedHeight); } dataGridViewColumn = this.Columns.GetNextColumn(dataGridViewColumn, DataGridViewElementStates.Visible, DataGridViewElementStates.None); } return ret; }
public virtual int GetPreferredWidth(DataGridViewAutoSizeColumnMode autoSizeColumnMode, bool fixedHeight) { if (((autoSizeColumnMode == DataGridViewAutoSizeColumnMode.NotSet) || (autoSizeColumnMode == DataGridViewAutoSizeColumnMode.None)) || (autoSizeColumnMode == DataGridViewAutoSizeColumnMode.Fill)) { throw new ArgumentException(System.Windows.Forms.SR.GetString("DataGridView_NeedColumnAutoSizingCriteria", new object[] { "autoSizeColumnMode" })); } switch (autoSizeColumnMode) { case DataGridViewAutoSizeColumnMode.NotSet: case DataGridViewAutoSizeColumnMode.None: case DataGridViewAutoSizeColumnMode.ColumnHeader: case DataGridViewAutoSizeColumnMode.AllCellsExceptHeader: case DataGridViewAutoSizeColumnMode.AllCells: case DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader: case DataGridViewAutoSizeColumnMode.DisplayedCells: case DataGridViewAutoSizeColumnMode.Fill: { int preferredWidth; int num3; DataGridViewRow row; DataGridView dataGridView = base.DataGridView; if (dataGridView == null) { return(-1); } DataGridViewAutoSizeColumnCriteriaInternal internal2 = (DataGridViewAutoSizeColumnCriteriaInternal)autoSizeColumnMode; int num = 0; if (dataGridView.ColumnHeadersVisible && ((internal2 & DataGridViewAutoSizeColumnCriteriaInternal.Header) != DataGridViewAutoSizeColumnCriteriaInternal.NotSet)) { if (fixedHeight) { preferredWidth = this.HeaderCell.GetPreferredWidth(-1, dataGridView.ColumnHeadersHeight); } else { preferredWidth = this.HeaderCell.GetPreferredSize(-1).Width; } if (num < preferredWidth) { num = preferredWidth; } } if ((internal2 & DataGridViewAutoSizeColumnCriteriaInternal.AllRows) != DataGridViewAutoSizeColumnCriteriaInternal.NotSet) { for (num3 = dataGridView.Rows.GetFirstRow(DataGridViewElementStates.Visible); num3 != -1; num3 = dataGridView.Rows.GetNextRow(num3, DataGridViewElementStates.Visible)) { row = dataGridView.Rows.SharedRow(num3); if (fixedHeight) { preferredWidth = row.Cells[base.Index].GetPreferredWidth(num3, row.Thickness); } else { preferredWidth = row.Cells[base.Index].GetPreferredSize(num3).Width; } if (num < preferredWidth) { num = preferredWidth; } } return(num); } if ((internal2 & DataGridViewAutoSizeColumnCriteriaInternal.DisplayedRows) != DataGridViewAutoSizeColumnCriteriaInternal.NotSet) { int height = dataGridView.LayoutInfo.Data.Height; int num5 = 0; for (num3 = dataGridView.Rows.GetFirstRow(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); (num3 != -1) && (num5 < height); num3 = dataGridView.Rows.GetNextRow(num3, DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen)) { row = dataGridView.Rows.SharedRow(num3); if (fixedHeight) { preferredWidth = row.Cells[base.Index].GetPreferredWidth(num3, row.Thickness); } else { preferredWidth = row.Cells[base.Index].GetPreferredSize(num3).Width; } if (num < preferredWidth) { num = preferredWidth; } num5 += row.Thickness; } if (num5 >= height) { return(num); } for (num3 = dataGridView.DisplayedBandsInfo.FirstDisplayedScrollingRow; (num3 != -1) && (num5 < height); num3 = dataGridView.Rows.GetNextRow(num3, DataGridViewElementStates.Visible)) { row = dataGridView.Rows.SharedRow(num3); if (fixedHeight) { preferredWidth = row.Cells[base.Index].GetPreferredWidth(num3, row.Thickness); } else { preferredWidth = row.Cells[base.Index].GetPreferredSize(num3).Width; } if (num < preferredWidth) { num = preferredWidth; } num5 += row.Thickness; } } return(num); } } throw new InvalidEnumArgumentException("value", (int)autoSizeColumnMode, typeof(DataGridViewAutoSizeColumnMode)); }
private bool AutoResizeColumnInternal(int columnIndex, DataGridViewAutoSizeColumnCriteriaInternal autoSizeColumnCriteriaInternal, bool fixedHeight) { if (!base.IsHandleCreated) { this.dataGridViewState2[0x100000] = true; return false; } bool flag = false; try { this.noAutoSizeCount++; DataGridViewColumn dataGridViewColumn = this.Columns[columnIndex]; int preferredWidth = dataGridViewColumn.GetPreferredWidth((DataGridViewAutoSizeColumnMode) autoSizeColumnCriteriaInternal, fixedHeight); if (preferredWidth < dataGridViewColumn.MinimumThickness) { preferredWidth = dataGridViewColumn.MinimumThickness; } if (preferredWidth > 0x10000) { preferredWidth = 0x10000; } if (preferredWidth == dataGridViewColumn.Thickness) { return flag; } if (dataGridViewColumn.InheritedAutoSizeMode == DataGridViewAutoSizeColumnMode.Fill) { this.AdjustFillingColumn(dataGridViewColumn, preferredWidth); } else { this.Columns[columnIndex].ThicknessInternal = preferredWidth; } flag = true; } finally { this.noAutoSizeCount--; } return flag; }
private bool AutoResizeAllVisibleColumnsInternal(DataGridViewAutoSizeColumnCriteriaInternal autoSizeColumnCriteriaFilter, bool fixedHeight) { bool flag = false; for (DataGridViewColumn column = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible); column != null; column = this.Columns.GetNextColumn(column, DataGridViewElementStates.Visible, DataGridViewElementStates.None)) { DataGridViewAutoSizeColumnCriteriaInternal inheritedAutoSizeMode = (DataGridViewAutoSizeColumnCriteriaInternal) column.InheritedAutoSizeMode; if ((inheritedAutoSizeMode & autoSizeColumnCriteriaFilter) != DataGridViewAutoSizeColumnCriteriaInternal.NotSet) { flag |= this.AutoResizeColumnInternal(column.Index, inheritedAutoSizeMode, fixedHeight); } } return flag; }
private bool AdjustExpandingColumns(DataGridViewAutoSizeColumnCriteriaInternal autoSizeColumnCriteriaFilter, int rowIndex) { bool flag = false; for (DataGridViewColumn column = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible); column != null; column = this.Columns.GetNextColumn(column, DataGridViewElementStates.Visible, DataGridViewElementStates.None)) { if ((column.InheritedAutoSizeMode & ((DataGridViewAutoSizeColumnMode) ((int) autoSizeColumnCriteriaFilter))) != DataGridViewAutoSizeColumnMode.NotSet) { flag |= this.AdjustExpandingColumn(column, rowIndex); } } return flag; }