/// <summary>
        /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed.
        /// <example>
        /// datagridviewcolumnstatechangedeventhandler.BeginInvoke(sender, e, callback);
        /// </example>
        /// </summary>
        public static IAsyncResult BeginInvoke(this DataGridViewColumnStateChangedEventHandler datagridviewcolumnstatechangedeventhandler, Object sender, DataGridViewColumnStateChangedEventArgs e, AsyncCallback callback)
        {
            if(datagridviewcolumnstatechangedeventhandler == null) throw new ArgumentNullException("datagridviewcolumnstatechangedeventhandler");

            return datagridviewcolumnstatechangedeventhandler.BeginInvoke(sender, e, callback, null);
        }
 protected override void OnColumnStateChanged(DataGridViewColumnStateChangedEventArgs e)
 {
     if (!this.DesignMode)
     {
         base.OnColumnStateChanged(e);
     }
 }
        /// <include file='doc\DataGridView.uex' path='docs/doc[@for="DataGridView.OnColumnStateChanged"]/*' />
        protected virtual void OnColumnStateChanged(DataGridViewColumnStateChangedEventArgs e)
        {
            // column.Frozen | .Visible changed - this may require a complete re-layout of the control
            DataGridViewColumn dataGridViewColumn = e.Column;
            switch (e.StateChanged)
            {
                // At this point we assume that only the Selected state has an influence on the rendering of the column. 
                // If there is a customer scenario where another state has an influence, the dev must invalidate the column by hand.
                // case DataGridViewElementStates.ReadOnly:
                // case DataGridViewElementStates.Resizable:

                case DataGridViewElementStates.Selected:
                    if (dataGridViewColumn.Visible && this.inBulkPaintCount == 0)
                    {
                        InvalidateColumnInternal(dataGridViewColumn.Index);
                    }
                    break;

                case DataGridViewElementStates.Frozen:
                    if (dataGridViewColumn.Visible)
                    {
                        if (dataGridViewColumn.Frozen)
                        {
                            // visible column became frozen
                            if (this.horizontalOffset >= dataGridViewColumn.Thickness)
                            {
                                Debug.Assert(this.Columns.DisplayInOrder(dataGridViewColumn.Index, this.displayedBandsInfo.FirstDisplayedScrollingCol));
                                this.horizontalOffset -= dataGridViewColumn.Thickness;
                            }
                            else
                            {
                                this.horizontalOffset = this.negOffset = 0;
                            }
                        }
                        else
                        {
                            // column was unfrozen - make it the first visible scrolling column if there is room
                            this.horizontalOffset = this.negOffset = 0;
                        }
                        if (this.horizScrollBar.Enabled)
                        {
                            this.horizScrollBar.Value = this.horizontalOffset;
                        }

                        // UsedFillWeight values need to be updated
                        this.dataGridViewState2[DATAGRIDVIEWSTATE2_usedFillWeightsDirty] = true;

                        PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/);
                        Invalidate();
                    }
                    break;

                case DataGridViewElementStates.Visible:
                    if (!dataGridViewColumn.Visible && dataGridViewColumn.Displayed)
                    {
                        // Displayed column becomes invisible. Turns off the Displayed state.
                        dataGridViewColumn.DisplayedInternal = false;
                    }

                    // UsedFillWeight values need to be updated
                    this.dataGridViewState2[DATAGRIDVIEWSTATE2_usedFillWeightsDirty] = true;

                    PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/);

                    bool autoSizeRows = (((DataGridViewAutoSizeRowsModeInternal)this.autoSizeRowsMode) & DataGridViewAutoSizeRowsModeInternal.AllColumns) != 0 || 
                                        ((((DataGridViewAutoSizeRowsModeInternal) this.autoSizeRowsMode) & DataGridViewAutoSizeRowsModeInternal.Header) != 0 &&
                                        this.RowHeadersVisible);
                    bool autoSizeColumn = false;
                    DataGridViewAutoSizeColumnMode autoSizeColumnMode = dataGridViewColumn.InheritedAutoSizeMode;
                    Debug.Assert(autoSizeColumnMode != DataGridViewAutoSizeColumnMode.NotSet);
                    if (autoSizeColumnMode != DataGridViewAutoSizeColumnMode.None &&
                        autoSizeColumnMode != DataGridViewAutoSizeColumnMode.Fill)
                    {
                        // Column autosizes
                        int width = dataGridViewColumn.ThicknessInternal;
                        if (dataGridViewColumn.Visible)
                        {
                            // Cache column's width before potential autosizing occurs
                            dataGridViewColumn.CachedThickness = width;
                            AutoResizeColumnInternal(dataGridViewColumn.Index, (DataGridViewAutoSizeColumnCriteriaInternal)autoSizeColumnMode, !autoSizeRows /*fixedHeight*/);
                            autoSizeColumn = true;
                        }
                        else if (width != dataGridViewColumn.CachedThickness)
                        {
                            // Columns that are made invisible in the collection take their non-autosized width
                            dataGridViewColumn.ThicknessInternal = Math.Max(dataGridViewColumn.MinimumWidth, dataGridViewColumn.CachedThickness);
                        }
                    }

                    if (autoSizeRows)
                    {
                        if (dataGridViewColumn.Visible)
                        {
                            AdjustExpandingRows(dataGridViewColumn.Index, true /*fixedWidth*/);
                        }
                        else
                        {
                            AdjustShrinkingRows(this.autoSizeRowsMode, true /*fixedWidth*/, true /*internalAutosizing*/);
                        }
                        if (autoSizeColumn)
                        {
                            // Second round of column autosizing
                            AutoResizeColumnInternal(dataGridViewColumn.Index, (DataGridViewAutoSizeColumnCriteriaInternal)autoSizeColumnMode, true /*fixedHeight*/);
                        }
                    }
                    else
                    {
                        Invalidate();
                    }
                    break;
            }

            DataGridViewColumnStateChangedEventHandler eh = this.Events[EVENT_DATAGRIDVIEWCOLUMNSTATECHANGED] as DataGridViewColumnStateChangedEventHandler;
            if (eh != null && !this.dataGridViewOper[DATAGRIDVIEWOPER_inDispose] && !this.IsDisposed)
            {
                eh(this, e);
            }

            if (e.StateChanged == DataGridViewElementStates.ReadOnly &&
                dataGridViewColumn.Index == this.ptCurrentCell.X &&
                !this.dataGridViewOper[DATAGRIDVIEWOPER_inReadOnlyChange])
            {
                VerifyImeRestrictedModeChanged();

                if (!dataGridViewColumn.ReadOnly &&
                    ColumnEditable(this.ptCurrentCell.X) &&
                    (this.Rows.GetRowState(this.ptCurrentCell.Y) & DataGridViewElementStates.ReadOnly) == 0 &&
                     !this.IsCurrentCellInEditMode &&
                     (this.EditMode == DataGridViewEditMode.EditOnEnter ||
                      (this.EditMode != DataGridViewEditMode.EditProgrammatically && this.CurrentCellInternal.EditType == null)))
                {
                    // Current column becomes read/write. Enter editing mode.
                    BeginEditInternal(true /*selectAll*/);
                }
            }
        }
        internal void OnDataGridViewElementStateChanged(DataGridViewElement element, int index, DataGridViewElementStates elementState)
        {
            DataGridViewColumn dataGridViewColumn = element as DataGridViewColumn;
            if (dataGridViewColumn != null)
            {
                DataGridViewColumnStateChangedEventArgs dgvcsce = new DataGridViewColumnStateChangedEventArgs(dataGridViewColumn, elementState);

                OnColumnStateChanged(dgvcsce);
            }
            else
            {
                DataGridViewRow dataGridViewRow = element as DataGridViewRow;
                if (dataGridViewRow != null)
                {
                    DataGridViewRowStateChangedEventHandler eh = this.Events[EVENT_DATAGRIDVIEWROWSTATECHANGED] as DataGridViewRowStateChangedEventHandler;

                    if (eh != null && dataGridViewRow.DataGridView != null && dataGridViewRow.Index == -1)
                    {
                        dataGridViewRow = this.Rows[index];
                    }

                    DataGridViewRowStateChangedEventArgs dgvrsce = new DataGridViewRowStateChangedEventArgs(dataGridViewRow, elementState);

                    OnRowStateChanged(dataGridViewRow.Index == -1 ? index : dataGridViewRow.Index, dgvrsce);
                }
                else
                {
                    DataGridViewCell dataGridViewCell = element as DataGridViewCell;
                    if (dataGridViewCell != null)
                    {
                        DataGridViewCellStateChangedEventArgs dgvcsce = new DataGridViewCellStateChangedEventArgs(dataGridViewCell, elementState);

                        OnCellStateChanged(dgvcsce);
                    }
                }
            }

            if ((elementState & DataGridViewElementStates.Selected) == DataGridViewElementStates.Selected)
            {
                if (this.noSelectionChangeCount > 0)
                {
                    this.dataGridViewState2[DATAGRIDVIEWSTATE2_raiseSelectionChanged] = true;
                }
                else
                {
                    OnSelectionChanged(EventArgs.Empty);
                }
            }
        }
 private void dgv_ColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
 {
     resizeSumBoxes();
 }
 internal void OnColumnHidden(DataGridViewColumn dataGridViewColumn)
 {
     Debug.Assert(dataGridViewColumn != null);
     if (dataGridViewColumn.Displayed)
     {
         dataGridViewColumn.DisplayedInternal = false;
         DataGridViewColumnStateChangedEventArgs dgvrsce = new DataGridViewColumnStateChangedEventArgs(dataGridViewColumn, DataGridViewElementStates.Displayed);
         OnColumnStateChanged(dgvrsce);
     }
 }
 protected virtual void OnColumnStateChanged(DataGridViewColumnStateChangedEventArgs e);
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Called when the visible property of the column changed.
		/// </summary>
		/// <param name="sender">The sender.</param>
		/// <param name="e">The <see cref="T:System.EventArgs"/> instance containing the event
		/// data.</param>
		/// ------------------------------------------------------------------------------------
		protected void OnColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
		{
			if (e.Column != OwningColumn || e.StateChanged != DataGridViewElementStates.Visible)
				return;

			ControlVisible = OwningRow.Index >= 0 ? OwningColumn.Visible && OwningRow.Visible : false;
		}
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Called when the column state changed.
		/// </summary>
		/// <param name="sender">The sender.</param>
		/// <param name="e">The <see cref="T:System.Windows.Forms.DataGridViewColumnStateChangedEventArgs"/>
		/// instance containing the event data.</param>
		/// ------------------------------------------------------------------------------------
		private void OnColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
		{
			if (e.Column != this || e.StateChanged != DataGridViewElementStates.Visible)
				return;

			if (Visible && Width <= kMinimumValue)
				Width = m_StandardWidth;
		}
 private void OnGridColumnsStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
 {
     if (e.StateChanged == DataGridViewElementStates.Visible)
         RepositionGridHeaders();
 }
 internal void OnDataGridViewElementStateChanged(DataGridViewElement element, int index, DataGridViewElementStates elementState)
 {
     DataGridViewColumn dataGridViewColumn = element as DataGridViewColumn;
     if (dataGridViewColumn != null)
     {
         DataGridViewColumnStateChangedEventArgs e = new DataGridViewColumnStateChangedEventArgs(dataGridViewColumn, elementState);
         this.OnColumnStateChanged(e);
     }
     else
     {
         DataGridViewRow dataGridViewRow = element as DataGridViewRow;
         if (dataGridViewRow != null)
         {
             if (((base.Events[EVENT_DATAGRIDVIEWROWSTATECHANGED] is DataGridViewRowStateChangedEventHandler) && (dataGridViewRow.DataGridView != null)) && (dataGridViewRow.Index == -1))
             {
                 dataGridViewRow = this.Rows[index];
             }
             DataGridViewRowStateChangedEventArgs args2 = new DataGridViewRowStateChangedEventArgs(dataGridViewRow, elementState);
             this.OnRowStateChanged((dataGridViewRow.Index == -1) ? index : dataGridViewRow.Index, args2);
         }
         else
         {
             DataGridViewCell dataGridViewCell = element as DataGridViewCell;
             if (dataGridViewCell != null)
             {
                 DataGridViewCellStateChangedEventArgs args3 = new DataGridViewCellStateChangedEventArgs(dataGridViewCell, elementState);
                 this.OnCellStateChanged(args3);
             }
         }
     }
     if ((elementState & DataGridViewElementStates.Selected) == DataGridViewElementStates.Selected)
     {
         if (this.noSelectionChangeCount > 0)
         {
             this.dataGridViewState2[0x40000] = true;
         }
         else
         {
             this.OnSelectionChanged(EventArgs.Empty);
         }
     }
 }
        protected virtual void OnColumnStateChanged(DataGridViewColumnStateChangedEventArgs e)
        {
            bool flag;
            bool flag2;
            DataGridViewAutoSizeColumnMode inheritedAutoSizeMode;
            DataGridViewColumnStateChangedEventHandler handler;
            DataGridViewColumn column = e.Column;
            switch (e.StateChanged)
            {
                case DataGridViewElementStates.Frozen:
                    if (column.Visible)
                    {
                        if (column.Frozen)
                        {
                            if (this.horizontalOffset >= column.Thickness)
                            {
                                this.horizontalOffset -= column.Thickness;
                            }
                            else
                            {
                                this.horizontalOffset = this.negOffset = 0;
                            }
                        }
                        else
                        {
                            this.horizontalOffset = this.negOffset = 0;
                        }
                        if (this.horizScrollBar.Enabled)
                        {
                            this.horizScrollBar.Value = this.horizontalOffset;
                        }
                        this.dataGridViewState2[0x4000000] = true;
                        this.PerformLayoutPrivate(false, false, true, true);
                        base.Invalidate();
                    }
                    break;

                case DataGridViewElementStates.Selected:
                    if (column.Visible && (this.inBulkPaintCount == 0))
                    {
                        this.InvalidateColumnInternal(column.Index);
                    }
                    break;

                case DataGridViewElementStates.Visible:
                {
                    if (!column.Visible && column.Displayed)
                    {
                        column.DisplayedInternal = false;
                    }
                    this.dataGridViewState2[0x4000000] = true;
                    this.PerformLayoutPrivate(false, false, true, true);
                    flag = ((this.autoSizeRowsMode & ((DataGridViewAutoSizeRowsMode) 2)) != DataGridViewAutoSizeRowsMode.None) || (((this.autoSizeRowsMode & ((DataGridViewAutoSizeRowsMode) 1)) != DataGridViewAutoSizeRowsMode.None) && this.RowHeadersVisible);
                    flag2 = false;
                    inheritedAutoSizeMode = column.InheritedAutoSizeMode;
                    switch (inheritedAutoSizeMode)
                    {
                        case DataGridViewAutoSizeColumnMode.None:
                        case DataGridViewAutoSizeColumnMode.Fill:
                            goto Label_01A3;
                    }
                    int thicknessInternal = column.ThicknessInternal;
                    if (column.Visible)
                    {
                        column.CachedThickness = thicknessInternal;
                        this.AutoResizeColumnInternal(column.Index, (DataGridViewAutoSizeColumnCriteriaInternal) inheritedAutoSizeMode, !flag);
                        flag2 = true;
                    }
                    else if (thicknessInternal != column.CachedThickness)
                    {
                        column.ThicknessInternal = Math.Max(column.MinimumWidth, column.CachedThickness);
                    }
                    goto Label_01A3;
                }
            }
            goto Label_01E5;
        Label_01A3:
            if (flag)
            {
                if (column.Visible)
                {
                    this.AdjustExpandingRows(column.Index, true);
                }
                else
                {
                    this.AdjustShrinkingRows(this.autoSizeRowsMode, true, true);
                }
                if (flag2)
                {
                    this.AutoResizeColumnInternal(column.Index, (DataGridViewAutoSizeColumnCriteriaInternal) inheritedAutoSizeMode, true);
                }
            }
            else
            {
                base.Invalidate();
            }
        Label_01E5:
            handler = base.Events[EVENT_DATAGRIDVIEWCOLUMNSTATECHANGED] as DataGridViewColumnStateChangedEventHandler;
            if (((handler != null) && !this.dataGridViewOper[0x100000]) && !base.IsDisposed)
            {
                handler(this, e);
            }
            if (((e.StateChanged == DataGridViewElementStates.ReadOnly) && (column.Index == this.ptCurrentCell.X)) && !this.dataGridViewOper[0x4000])
            {
                base.VerifyImeRestrictedModeChanged();
                if (((!column.ReadOnly && this.ColumnEditable(this.ptCurrentCell.X)) && (((this.Rows.GetRowState(this.ptCurrentCell.Y) & DataGridViewElementStates.ReadOnly) == DataGridViewElementStates.None) && !this.IsCurrentCellInEditMode)) && ((this.EditMode == DataGridViewEditMode.EditOnEnter) || ((this.EditMode != DataGridViewEditMode.EditProgrammatically) && (this.CurrentCellInternal.EditType == null))))
                {
                    this.BeginEditInternal(true);
                }
            }
        }
 internal void OnColumnHidden(DataGridViewColumn dataGridViewColumn)
 {
     if (dataGridViewColumn.Displayed)
     {
         dataGridViewColumn.DisplayedInternal = false;
         DataGridViewColumnStateChangedEventArgs e = new DataGridViewColumnStateChangedEventArgs(dataGridViewColumn, DataGridViewElementStates.Displayed);
         this.OnColumnStateChanged(e);
     }
 }
Exemple #14
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Called when the column state changed.
		/// </summary>
		/// <param name="sender">The sender.</param>
		/// <param name="e">The <see cref="T:System.Windows.Forms.DataGridViewColumnStateChangedEventArgs"/>
		/// instance containing the event data.</param>
		/// ------------------------------------------------------------------------------------
		protected virtual void OnColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
		{
			if (e.StateChanged != DataGridViewElementStates.Visible ||
				m_grid.DisplayedColumnCount(true) == 0)
			{
				return;
			}

			OnShown(sender, EventArgs.Empty);
		}
Exemple #15
0
 private void MetroGrid_ColumnStateChanged(object sender, System.Windows.Forms.DataGridViewColumnStateChangedEventArgs e)
 {
     OnColumnStateChanged(e);
 }
 /// <summary>
 /// 当显示合计行改变时,使合计行的对应列也作出对应改变,同时判断是否应该显示横向滚动条
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void dgv_ColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
 {
     if (e.StateChanged == DataGridViewElementStates.Visible)
     {
         dgvSum.Columns[e.Column.Index].Visible = e.Column.Visible;
         //if (IsShowScroll(this.dgvSum))
         //{
         //    //if (this.dgvSum.Height != ROW_HEIGHT + 20)
         //    //this.dgvSum.Height = ROW_HEIGHT + 20;
         //}
         //else
         //{
         //    //if (this.dgvSum.Height != ROW_HEIGHT)
         //    //this.dgvSum.Height = ROW_HEIGHT;
         //}
         SetDataGridViewLocation();
         if (this.sumColumns.Contains(e.Column.Name))
         {
             this.SetSum();
         }
     }
 }
		//-------------------------------------------------------------------------------------
		#region << Controls Handlers >>
		void fdgv_ColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
		{
			try
			{
				if(isInit)
					return;
				if(e.StateChanged == DataGridViewElementStates.Visible)
					if(e.Column.Visible == false)
					{
						DetailColumnViewControl c = new DetailColumnViewControl();
						c.Name = e.Column.Name;
						c.Caption = e.Column.HeaderText;
						c.ButtonHidePressed += new EventHandler(detailColumnViewControl_ButtonHidePressed);
						panelDetail.Controls.Add(c);
						c.Dock = DockStyle.Top;
						c.BringToFront();
						if(fdgv.CurrentRow != null)
							if(e.Column.ValueType == typeof(bool))
								c.Text = ((bool)fdgv.CurrentRow.Cells[e.Column.Index].Value ? "Да" : "Нет");
							else if(typeof(Image).IsAssignableFrom(e.Column.ValueType))
								c.Text = fdgv.CurrentRow.Cells[e.Column.Index].Value.ToString();
							else
								c.Text = fdgv.CurrentRow.Cells[e.Column.Index].FormattedValue.ToString();
					}
					else if(panelDetail.Controls.ContainsKey(e.Column.Name))
						panelDetail.Controls.RemoveByKey(e.Column.Name);
			}
			catch(Exception Err)
			{
				ErrorBox.Show(Err);
			}
		}
Exemple #18
0
		protected internal virtual void OnColumnStateChanged (DataGridViewColumnStateChangedEventArgs e)
		{
			DataGridViewColumnStateChangedEventHandler eh = (DataGridViewColumnStateChangedEventHandler)(Events [ColumnStateChangedEvent]);
			if (eh != null)
				eh (this, e);
		}
 private void DataGridView_ColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
 {
   if (e.StateChanged != DataGridViewElementStates.Visible)
     return;
   ColumnItem columnItem = (ColumnItem) e.Column.Tag;
   if (e.Column.Visible)
   {
     this.AddColumnItem(columnItem);
   }
   else
   {
     bool flag = columnItem.Equals(this.cbxColumnItem.SelectedItem);
     this.cbxColumnItem.Items.Remove((object) columnItem);
     if (!flag)
       return;
     this.cbxColumnItem_SelectedIndexChanged((object) this.cbxColumnItem, EventArgs.Empty);
   }
 }