protected internal override string GetErrorText(int rowIndex) { if (OwningRow == null) { return(base.GetErrorText(rowIndex)); } else { return(OwningRow.GetErrorText(rowIndex)); } }
protected override Size GetPreferredSize(Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex, Size constraintSize) { if (DataGridView == null) { return(new Size(-1, -1)); } if (cellStyle == null) { throw new ArgumentNullException(nameof(cellStyle)); } DataGridViewAdvancedBorderStyle dgvabsPlaceholder = new DataGridViewAdvancedBorderStyle(), dgvabsEffective; dgvabsEffective = OwningRow.AdjustRowHeaderBorderStyle(DataGridView.AdvancedRowHeadersBorderStyle, dgvabsPlaceholder, false /*singleVerticalBorderAdded*/, false /*singleHorizontalBorderAdded*/, false /*isFirstDisplayedRow*/, false /*isLastVisibleRow*/); Rectangle borderWidthsRect = BorderWidths(dgvabsEffective); int borderAndPaddingWidths = borderWidthsRect.Left + borderWidthsRect.Width + cellStyle.Padding.Horizontal; int borderAndPaddingHeights = borderWidthsRect.Top + borderWidthsRect.Height + cellStyle.Padding.Vertical; TextFormatFlags flags = DataGridViewUtilities.ComputeTextFormatFlagsForCellStyleAlignment(DataGridView.RightToLeftInternal, cellStyle.Alignment, cellStyle.WrapMode); if (DataGridView.ApplyVisualStylesToHeaderCells) { // Add the theming margins to the borders. Rectangle rectThemeMargins = DataGridViewHeaderCell.GetThemeMargins(graphics); borderAndPaddingWidths += rectThemeMargins.Y; borderAndPaddingWidths += rectThemeMargins.Height; borderAndPaddingHeights += rectThemeMargins.X; borderAndPaddingHeights += rectThemeMargins.Width; } // Intentionally not using GetFormattedValue because header cells don't typically perform formatting. object val = GetValue(rowIndex); if (!(val is string)) { val = null; } return(DataGridViewUtilities.GetPreferredRowHeaderSize(graphics, (string)val, cellStyle, borderAndPaddingWidths, borderAndPaddingHeights, DataGridView.ShowRowErrors, true /*showGlyph*/, constraintSize, flags)); }
protected override Size GetSize(int rowIndex) { if (DataGridView == null) { // detached cell if (rowIndex != -1) { throw new ArgumentOutOfRangeException(nameof(rowIndex)); } return(new Size(-1, -1)); } if (OwningColumn != null) { // must be a column header cell if (rowIndex != -1) { throw new ArgumentOutOfRangeException(nameof(rowIndex)); } return(new Size(OwningColumn.Thickness, DataGridView.ColumnHeadersHeight)); } else if (OwningRow != null) { // must be a row header cell if (rowIndex < 0 || rowIndex >= DataGridView.Rows.Count) { throw new ArgumentOutOfRangeException(nameof(rowIndex)); } if (DataGridView.Rows.SharedRow(rowIndex) != OwningRow) { throw new ArgumentException(string.Format(SR.InvalidArgument, nameof(rowIndex), rowIndex)); } return(new Size(DataGridView.RowHeadersWidth, OwningRow.GetHeight(rowIndex))); } else { // must be the top left header cell if (rowIndex != -1) { throw new ArgumentOutOfRangeException(nameof(rowIndex)); } return(new Size(DataGridView.RowHeadersWidth, DataGridView.ColumnHeadersHeight)); } }
public override DataGridViewElementStates GetInheritedState(int rowIndex) { DataGridViewElementStates state = DataGridViewElementStates.ResizableSet | DataGridViewElementStates.ReadOnly; if (OwningRow != null) { // row header cell if ((DataGridView == null && rowIndex != -1) || (DataGridView != null && (rowIndex < 0 || rowIndex >= DataGridView.Rows.Count))) { throw new ArgumentException(string.Format(SR.InvalidArgument, nameof(rowIndex), rowIndex)); } if (DataGridView != null && DataGridView.Rows.SharedRow(rowIndex) != OwningRow) { throw new ArgumentException(string.Format(SR.InvalidArgument, nameof(rowIndex), rowIndex)); } state |= (OwningRow.GetState(rowIndex) & DataGridViewElementStates.Frozen); if (OwningRow.GetResizable(rowIndex) == DataGridViewTriState.True || (DataGridView != null && DataGridView.RowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.EnableResizing)) { state |= DataGridViewElementStates.Resizable; } if (OwningRow.GetVisible(rowIndex) && (DataGridView == null || DataGridView.RowHeadersVisible)) { state |= DataGridViewElementStates.Visible; if (OwningRow.GetDisplayed(rowIndex)) { state |= DataGridViewElementStates.Displayed; } } } else if (OwningColumn != null) { // column header cell if (rowIndex != -1) { throw new ArgumentOutOfRangeException(nameof(rowIndex)); } state |= (OwningColumn.State & DataGridViewElementStates.Frozen); if (OwningColumn.Resizable == DataGridViewTriState.True || (DataGridView != null && DataGridView.ColumnHeadersHeightSizeMode == DataGridViewColumnHeadersHeightSizeMode.EnableResizing)) { state |= DataGridViewElementStates.Resizable; } if (OwningColumn.Visible && (DataGridView == null || DataGridView.ColumnHeadersVisible)) { state |= DataGridViewElementStates.Visible; if (OwningColumn.Displayed) { state |= DataGridViewElementStates.Displayed; } } } else if (DataGridView != null) { // top left header cell if (rowIndex != -1) { throw new ArgumentOutOfRangeException(nameof(rowIndex)); } state |= DataGridViewElementStates.Frozen; if (DataGridView.RowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.EnableResizing || DataGridView.ColumnHeadersHeightSizeMode == DataGridViewColumnHeadersHeightSizeMode.EnableResizing) { state |= DataGridViewElementStates.Resizable; } if (DataGridView.RowHeadersVisible && DataGridView.ColumnHeadersVisible) { state |= DataGridViewElementStates.Visible; if (DataGridView.LayoutInfo.TopLeftHeader != Rectangle.Empty) { state |= DataGridViewElementStates.Displayed; } } } #if DEBUG if (OwningRow == null || OwningRow.Index != -1) { DataGridViewElementStates stateDebug = DataGridViewElementStates.ResizableSet; if (Displayed) { stateDebug |= DataGridViewElementStates.Displayed; } if (Frozen) { stateDebug |= DataGridViewElementStates.Frozen; } if (ReadOnly) { stateDebug |= DataGridViewElementStates.ReadOnly; } if (Resizable) { stateDebug |= DataGridViewElementStates.Resizable; } if (Selected) { stateDebug |= DataGridViewElementStates.Selected; } if (Visible) { stateDebug |= DataGridViewElementStates.Visible; } Debug.Assert(state == stateDebug); } #endif return(state); }