/// <include file='doc\DataGridView.uex' path='docs/doc[@for="DataGridView.OnAutoSizeColumnModeChanged"]/*' />
        protected virtual void OnAutoSizeColumnModeChanged(DataGridViewAutoSizeColumnModeEventArgs e)
        {
            DataGridViewColumn dataGridViewColumn = e.Column;
            if (e.Column == null)
            {
                throw new InvalidOperationException(SR.GetString(SR.InvalidNullArgument, "e.Column"));
            }
            DataGridViewAutoSizeColumnMode autoSizeColumnMode = dataGridViewColumn.InheritedAutoSizeMode;
            Debug.Assert(autoSizeColumnMode != DataGridViewAutoSizeColumnMode.NotSet);

            DataGridViewAutoSizeColumnMode previousInheritedMode = e.PreviousMode;
            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;
            }

            bool fixedHeight = (((DataGridViewAutoSizeRowsModeInternal)this.autoSizeRowsMode) & DataGridViewAutoSizeRowsModeInternal.AllColumns) == 0;

            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,
                                             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 (!fixedHeight)
            {
                AdjustShrinkingRows(this.autoSizeRowsMode, true /*fixedWidth*/, true /*internalAutosizing*/);
                if (this.ColumnHeadersHeightSizeMode == DataGridViewColumnHeadersHeightSizeMode.AutoSize)
                {
                    AutoResizeColumnHeadersHeight(dataGridViewColumn.Index, true /*fixedRowHeadersWidth*/, true /*fixedColumnWidth*/);
                }

                // Column gets autosized with 1 degree of freedom this time.
                if (autoSizeColumnMode != DataGridViewAutoSizeColumnMode.None && autoSizeColumnMode != DataGridViewAutoSizeColumnMode.Fill)
                {
                    AutoResizeColumnInternal(dataGridViewColumn.Index,
                                             (DataGridViewAutoSizeColumnCriteriaInternal)autoSizeColumnMode,
                                             true /*fixedHeight*/);
                }
            }

            DataGridViewAutoSizeColumnModeEventHandler eh = this.Events[EVENT_DATAGRIDVIEWAUTOSIZECOLUMNMODECHANGED] as DataGridViewAutoSizeColumnModeEventHandler;
            if (eh != null && !this.dataGridViewOper[DATAGRIDVIEWOPER_inDispose] && !this.IsDisposed)
            {
                eh(this, e);
            }
        }
Пример #2
0
		protected internal virtual void OnAutoSizeColumnModeChanged (DataGridViewAutoSizeColumnModeEventArgs e)
		{
			DataGridViewAutoSizeColumnModeEventHandler eh = (DataGridViewAutoSizeColumnModeEventHandler)(Events [AutoSizeColumnModeChangedEvent]);
			if (eh != null)
				eh (this, e);
		}
 internal void OnAutoSizeColumnModeChanged(DataGridViewColumn dataGridViewColumn, DataGridViewAutoSizeColumnMode previousInheritedMode)
 {
     Debug.Assert(dataGridViewColumn != null);
     DataGridViewAutoSizeColumnModeEventArgs dgvascme = new DataGridViewAutoSizeColumnModeEventArgs(dataGridViewColumn, previousInheritedMode);
     OnAutoSizeColumnModeChanged(dgvascme);
 }
        /// <summary>
        /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed.
        /// <example>
        /// datagridviewautosizecolumnmodeeventhandler.BeginInvoke(sender, e, callback);
        /// </example>
        /// </summary>
        public static IAsyncResult BeginInvoke(this DataGridViewAutoSizeColumnModeEventHandler datagridviewautosizecolumnmodeeventhandler, Object sender, DataGridViewAutoSizeColumnModeEventArgs e, AsyncCallback callback)
        {
            if(datagridviewautosizecolumnmodeeventhandler == null) throw new ArgumentNullException("datagridviewautosizecolumnmodeeventhandler");

            return datagridviewautosizecolumnmodeeventhandler.BeginInvoke(sender, e, callback, null);
        }
 protected virtual void OnAutoSizeColumnModeChanged(DataGridViewAutoSizeColumnModeEventArgs e);
 internal void OnAutoSizeColumnModeChanged(DataGridViewColumn dataGridViewColumn, DataGridViewAutoSizeColumnMode previousInheritedMode)
 {
     DataGridViewAutoSizeColumnModeEventArgs e = new DataGridViewAutoSizeColumnModeEventArgs(dataGridViewColumn, previousInheritedMode);
     this.OnAutoSizeColumnModeChanged(e);
 }
        protected virtual void OnAutoSizeColumnModeChanged(DataGridViewAutoSizeColumnModeEventArgs e)
        {
            DataGridViewColumn column = e.Column;
            if (e.Column == null)
            {
                throw new InvalidOperationException(System.Windows.Forms.SR.GetString("InvalidNullArgument", new object[] { "e.Column" }));
            }
            DataGridViewAutoSizeColumnMode inheritedAutoSizeMode = column.InheritedAutoSizeMode;
            DataGridViewAutoSizeColumnMode previousMode = e.PreviousMode;
            bool flag = ((previousMode != DataGridViewAutoSizeColumnMode.Fill) && (previousMode != DataGridViewAutoSizeColumnMode.None)) && (previousMode != DataGridViewAutoSizeColumnMode.NotSet);
            if ((inheritedAutoSizeMode == DataGridViewAutoSizeColumnMode.Fill) || (previousMode == DataGridViewAutoSizeColumnMode.Fill))
            {
                this.dataGridViewState2[0x4000000] = true;
            }
            bool fixedHeight = (this.autoSizeRowsMode & ((DataGridViewAutoSizeRowsMode) 2)) == DataGridViewAutoSizeRowsMode.None;
            switch (inheritedAutoSizeMode)
            {
                case DataGridViewAutoSizeColumnMode.None:
                    if ((column.Thickness != column.CachedThickness) && flag)
                    {
                        column.ThicknessInternal = Math.Max(column.MinimumWidth, column.CachedThickness);
                    }
                    break;

                case DataGridViewAutoSizeColumnMode.Fill:
                    break;

                default:
                    if (!flag)
                    {
                        column.CachedThickness = column.Thickness;
                    }
                    this.AutoResizeColumnInternal(column.Index, (DataGridViewAutoSizeColumnCriteriaInternal) inheritedAutoSizeMode, fixedHeight);
                    break;
            }
            this.PerformLayoutPrivate(false, true, true, false);
            if (!fixedHeight)
            {
                this.AdjustShrinkingRows(this.autoSizeRowsMode, true, true);
                if (this.ColumnHeadersHeightSizeMode == DataGridViewColumnHeadersHeightSizeMode.AutoSize)
                {
                    this.AutoResizeColumnHeadersHeight(column.Index, true, true);
                }
                if ((inheritedAutoSizeMode != DataGridViewAutoSizeColumnMode.None) && (inheritedAutoSizeMode != DataGridViewAutoSizeColumnMode.Fill))
                {
                    this.AutoResizeColumnInternal(column.Index, (DataGridViewAutoSizeColumnCriteriaInternal) inheritedAutoSizeMode, true);
                }
            }
            DataGridViewAutoSizeColumnModeEventHandler handler = base.Events[EVENT_DATAGRIDVIEWAUTOSIZECOLUMNMODECHANGED] as DataGridViewAutoSizeColumnModeEventHandler;
            if (((handler != null) && !this.dataGridViewOper[0x100000]) && !base.IsDisposed)
            {
                handler(this, e);
            }
        }