/// <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); } }
/// ------------------------------------------------------------------------------------ /// <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); }
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); } }
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); } }