/// <summary> /// Create summary boxes for each Column of the DataGridView /// </summary> /// public void SetValue(DataGridViewColumn column, object value) { ReadOnlyTextBox sumBox = (ReadOnlyTextBox)sumBoxHash[column]; if (sumBox != null) { sumBox.TextAlign = TextHelper.TranslateGridColumnAligment(column.DefaultCellStyle.Alignment); sumBox.Font = dgv.DefaultCellStyle.Font; sumBox.Text = value.ToString(); sumBox.Invalidate(); } }
public void SetValue(DataGridViewColumn column, object value, string format) { ReadOnlyTextBox sumBox = (ReadOnlyTextBox)sumBoxHash[column]; if (sumBox != null) { sumBox.TextAlign = TextHelper.TranslateGridColumnAligment(column.DefaultCellStyle.Alignment); sumBox.Font = dgv.DefaultCellStyle.Font; if (IsDecimal(value)) { sumBox.Text = Convert.ToDecimal(value).ToString((format)); sumBox.Invalidate(); } else { sumBox.Text = value.ToString(); sumBox.Invalidate(); } } }
/// <summary> /// Resize the summary Boxes depending on the /// width of the Columns of the DataGridView /// </summary> private void resizeSumBoxes() { this.SuspendLayout(); if (sumBoxHash.Count > 0) { try { int rowHeaderWidth = dgv.RowHeadersVisible ? dgv.RowHeadersWidth - 1 : 0; int sumLabelWidth = dgv.RowHeadersVisible ? dgv.RowHeadersWidth - 1 : 0; int curPos = rowHeaderWidth; if (dgv.DisplaySumRowHeader && sumLabelWidth > 0) { if (dgv.RightToLeft == RightToLeft.Yes) { if (sumRowHeaderLabel.Dock != DockStyle.Right) { sumRowHeaderLabel.Dock = DockStyle.Right; } } else { if (sumRowHeaderLabel.Dock != DockStyle.Left) { sumRowHeaderLabel.Dock = DockStyle.Left; } } } else { if (sumRowHeaderLabel.Visible) { sumRowHeaderLabel.Visible = false; } } int iCnt = 0; Rectangle oldBounds; foreach (DataGridViewColumn dgvColumn in SortedColumns) //dgv.Columns) { ReadOnlyTextBox sumBox = (ReadOnlyTextBox)sumBoxHash[dgvColumn]; if (sumBox != null) { oldBounds = sumBox.Bounds; if (!dgvColumn.Visible) { sumBox.Visible = false; continue; } int from = curPos - dgv.HorizontalScrollingOffset; int width = dgvColumn.Width + (iCnt == 0 ? 0 : 0); if (from < rowHeaderWidth) { width -= rowHeaderWidth - from; from = rowHeaderWidth; } if (from + width > this.Width) { width = this.Width - from; } if (width < 4) { if (sumBox.Visible) { sumBox.Visible = false; } } else { if (this.RightToLeft == RightToLeft.Yes) { from = this.Width - from - width; } if (sumBox.Left != from || sumBox.Width != width) { sumBox.SetBounds(from, 0, width, 0, BoundsSpecified.X | BoundsSpecified.Width); } if (!sumBox.Visible) { sumBox.Visible = true; } } curPos += dgvColumn.Width + (iCnt == 0 ? 0 : 0); if (oldBounds != sumBox.Bounds) { sumBox.Invalidate(); } } iCnt++; } } finally { this.ResumeLayout(); } } }
private void reCreateSumBoxes() { ReadOnlyTextBox sumBox; foreach (Control control in sumBoxHash.Values) { this.Controls.Remove(control); } sumBoxHash.Clear(); int iCnt = 0; List <DataGridViewColumn> sortedColumns = SortedColumns; foreach (DataGridViewColumn dgvColumn in sortedColumns) { sumBox = new ReadOnlyTextBox(); if (!sumBoxHash.ContainsKey(dgvColumn)) { sumBoxHash.Add(dgvColumn, sumBox); } sumBox.Top = 0; sumBox.Height = dgv.RowTemplate.Height; sumBox.BorderColor = dgv.GridColor; sumBox.TextAlign = TextHelper.TranslateGridColumnAligment(dgvColumn.DataGridView.DefaultCellStyle.Alignment); sumBox.Font = dgvColumn.DataGridView.DefaultCellStyle.Font; sumBox.TabStop = false; if (summaryRowBackColor == null) { sumBox.BackColor = dgvColumn.DefaultCellStyle.BackColor; } else { sumBox.BackColor = summaryRowBackColor; } sumBox.BringToFront(); if (dgv.ColumnCount - iCnt == 1) { sumBox.IsLastColumn = true; } sumBox.BringToFront(); this.Controls.Add(sumBox); iCnt++; } if (dgv.DisplaySumRowHeader) { sumRowHeaderLabel.Font = new Font(dgv.DefaultCellStyle.Font, dgv.SumRowHeaderTextBold ? FontStyle.Bold : FontStyle.Regular); sumRowHeaderLabel.Anchor = AnchorStyles.Left; sumRowHeaderLabel.TextAlign = ContentAlignment.MiddleLeft; sumRowHeaderLabel.Height = sumRowHeaderLabel.Font.Height; sumRowHeaderLabel.Top = Convert.ToInt32(Convert.ToDouble(this.InitialHeight - sumRowHeaderLabel.Height) / 2F); sumRowHeaderLabel.Text = dgv.SumRowHeaderText; sumRowHeaderLabel.ForeColor = dgv.DefaultCellStyle.ForeColor; sumRowHeaderLabel.Margin = new Padding(0); sumRowHeaderLabel.Padding = new Padding(0); this.Controls.Add(sumRowHeaderLabel); } resizeSumBoxes(); }