protected virtual void OnAutoSizeColumnsModeChanged (DataGridViewAutoSizeColumnsModeEventArgs e) { DataGridViewAutoSizeColumnsModeEventHandler eh = (DataGridViewAutoSizeColumnsModeEventHandler)(Events [AutoSizeColumnsModeChangedEvent]); if (eh != null) eh (this, e); }
[SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly")] // e.PreviousModes is more precise than just e protected virtual void OnAutoSizeColumnsModeChanged(DataGridViewAutoSizeColumnsModeEventArgs e) { DataGridViewAutoSizeColumnMode[] previousModes = e.PreviousModes; if (previousModes == null) { throw new ArgumentNullException("e.PreviousModes"); } if (previousModes.Length != this.Columns.Count) { throw new ArgumentException(SR.GetString(SR.DataGridView_PreviousModesHasWrongLength)); } foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { if (dataGridViewColumn.Visible) { DataGridViewAutoSizeColumnMode autoSizeColumnMode = dataGridViewColumn.InheritedAutoSizeMode; Debug.Assert(autoSizeColumnMode != DataGridViewAutoSizeColumnMode.NotSet); DataGridViewAutoSizeColumnMode previousInheritedMode = previousModes[dataGridViewColumn.Index]; bool previousInheritedModeAutoSized = previousInheritedMode != DataGridViewAutoSizeColumnMode.Fill && previousInheritedMode != DataGridViewAutoSizeColumnMode.None && previousInheritedMode != DataGridViewAutoSizeColumnMode.NotSet; if (autoSizeColumnMode == DataGridViewAutoSizeColumnMode.Fill || previousInheritedMode == DataGridViewAutoSizeColumnMode.Fill) { // UsedFillWeight values need to be updated this.dataGridViewState2[DATAGRIDVIEWSTATE2_usedFillWeightsDirty] = true; } if (autoSizeColumnMode != DataGridViewAutoSizeColumnMode.None) { if (autoSizeColumnMode != DataGridViewAutoSizeColumnMode.Fill) { if (!previousInheritedModeAutoSized) { // Save current column width for later reuse dataGridViewColumn.CachedThickness = dataGridViewColumn.Thickness; } AutoResizeColumnInternal(dataGridViewColumn.Index, (DataGridViewAutoSizeColumnCriteriaInternal)autoSizeColumnMode, (((DataGridViewAutoSizeRowsModeInternal)this.autoSizeRowsMode) & DataGridViewAutoSizeRowsModeInternal.AllColumns) == 0 /*fixedHeight*/); } } else if (dataGridViewColumn.Thickness != dataGridViewColumn.CachedThickness && previousInheritedModeAutoSized) { // Restoring cached column width dataGridViewColumn.ThicknessInternal = Math.Max(dataGridViewColumn.MinimumWidth, dataGridViewColumn.CachedThickness); } } } // Auto fill columns if needed PerformLayoutPrivate(false /*useRowShortcut*/, true /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, false /*repositionEditingControl*/); // Autosize rows and column headers if needed if ((((DataGridViewAutoSizeRowsModeInternal)this.autoSizeRowsMode) & DataGridViewAutoSizeRowsModeInternal.AllColumns) != 0) { AdjustShrinkingRows(this.autoSizeRowsMode, true /*fixedWidth*/, true /*internalAutosizing*/); if (this.ColumnHeadersHeightSizeMode == DataGridViewColumnHeadersHeightSizeMode.AutoSize) { AutoResizeColumnHeadersHeight(true /*fixedRowHeadersWidth*/, true /*fixedColumnWidth*/); } // Second pass of column autosizing with 1 degree of freedom foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { DataGridViewAutoSizeColumnMode autoSizeColumnMode = dataGridViewColumn.InheritedAutoSizeMode; Debug.Assert(autoSizeColumnMode != DataGridViewAutoSizeColumnMode.NotSet); if (autoSizeColumnMode != DataGridViewAutoSizeColumnMode.None && autoSizeColumnMode != DataGridViewAutoSizeColumnMode.Fill) { AutoResizeColumnInternal(dataGridViewColumn.Index, (DataGridViewAutoSizeColumnCriteriaInternal)autoSizeColumnMode, true /*fixedHeight*/); } } } DataGridViewAutoSizeColumnsModeEventHandler eh = this.Events[EVENT_DATAGRIDVIEWAUTOSIZECOLUMNSMODECHANGED] as DataGridViewAutoSizeColumnsModeEventHandler; if (eh != null && !this.dataGridViewOper[DATAGRIDVIEWOPER_inDispose] && !this.IsDisposed) { eh(this, e); } }
protected virtual void OnAutoSizeColumnsModeChanged(DataGridViewAutoSizeColumnsModeEventArgs e);
/// <summary> /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed. /// <example> /// datagridviewautosizecolumnsmodeeventhandler.BeginInvoke(sender, e, callback); /// </example> /// </summary> public static IAsyncResult BeginInvoke(this DataGridViewAutoSizeColumnsModeEventHandler datagridviewautosizecolumnsmodeeventhandler, Object sender, DataGridViewAutoSizeColumnsModeEventArgs e, AsyncCallback callback) { if(datagridviewautosizecolumnsmodeeventhandler == null) throw new ArgumentNullException("datagridviewautosizecolumnsmodeeventhandler"); return datagridviewautosizecolumnsmodeeventhandler.BeginInvoke(sender, e, callback, null); }
protected virtual void OnAutoSizeColumnsModeChanged(DataGridViewAutoSizeColumnsModeEventArgs e) { DataGridViewAutoSizeColumnMode[] previousModes = e.PreviousModes; if (previousModes == null) { throw new ArgumentNullException("e.PreviousModes"); } if (previousModes.Length != this.Columns.Count) { throw new ArgumentException(System.Windows.Forms.SR.GetString("DataGridView_PreviousModesHasWrongLength")); } foreach (DataGridViewColumn column in this.Columns) { if (column.Visible) { DataGridViewAutoSizeColumnMode inheritedAutoSizeMode = column.InheritedAutoSizeMode; DataGridViewAutoSizeColumnMode mode2 = previousModes[column.Index]; bool flag = ((mode2 != DataGridViewAutoSizeColumnMode.Fill) && (mode2 != DataGridViewAutoSizeColumnMode.None)) && (mode2 != DataGridViewAutoSizeColumnMode.NotSet); if ((inheritedAutoSizeMode == DataGridViewAutoSizeColumnMode.Fill) || (mode2 == DataGridViewAutoSizeColumnMode.Fill)) { this.dataGridViewState2[0x4000000] = true; } switch (inheritedAutoSizeMode) { case DataGridViewAutoSizeColumnMode.None: { if ((column.Thickness != column.CachedThickness) && flag) { column.ThicknessInternal = Math.Max(column.MinimumWidth, column.CachedThickness); } continue; } case DataGridViewAutoSizeColumnMode.Fill: { continue; } } if (!flag) { column.CachedThickness = column.Thickness; } this.AutoResizeColumnInternal(column.Index, (DataGridViewAutoSizeColumnCriteriaInternal) inheritedAutoSizeMode, (this.autoSizeRowsMode & ((DataGridViewAutoSizeRowsMode) 2)) == DataGridViewAutoSizeRowsMode.None); } } this.PerformLayoutPrivate(false, true, true, false); if ((this.autoSizeRowsMode & ((DataGridViewAutoSizeRowsMode) 2)) != DataGridViewAutoSizeRowsMode.None) { this.AdjustShrinkingRows(this.autoSizeRowsMode, true, true); if (this.ColumnHeadersHeightSizeMode == DataGridViewColumnHeadersHeightSizeMode.AutoSize) { this.AutoResizeColumnHeadersHeight(true, true); } foreach (DataGridViewColumn column2 in this.Columns) { DataGridViewAutoSizeColumnMode mode3 = column2.InheritedAutoSizeMode; if ((mode3 != DataGridViewAutoSizeColumnMode.None) && (mode3 != DataGridViewAutoSizeColumnMode.Fill)) { this.AutoResizeColumnInternal(column2.Index, (DataGridViewAutoSizeColumnCriteriaInternal) mode3, true); } } } DataGridViewAutoSizeColumnsModeEventHandler handler = base.Events[EVENT_DATAGRIDVIEWAUTOSIZECOLUMNSMODECHANGED] as DataGridViewAutoSizeColumnsModeEventHandler; if (((handler != null) && !this.dataGridViewOper[0x100000]) && !base.IsDisposed) { handler(this, e); } }