DataGridView如何实现双表头结构,求解?
具体就是使表头实现多层结构的显示(不要用树结构)。具体就是一个标题占两列,下面各有一列不同表头
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.RowIndex == 0 && e.ColumnIndex >= 0) { int left = e.CellBounds.Left; int top = e.CellBounds.Top; int right = e.CellBounds.Right; int bottom = e.CellBounds.Bottom; e.Graphics.FillRectangle(new SolidBrush(Color.White), e.CellBounds); e.Handled = true; Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor); Pen gridLinePen = new Pen(gridBrush); e.Graphics.DrawLine(gridLinePen, right - 1, top, right - 1, bottom - 1); e.Graphics.DrawLine(gridLinePen, left, bottom - 1, right, bottom - 1); Brush b1 = new SolidBrush(Color.Black); e.Graphics.DrawString((String)e.Value, e.CellStyle.Font, b1, left + 2, top + 1, StringFormat.GenericDefault); Brush b2 = new SolidBrush(Color.Red); e.Graphics.DrawString((String)e.Value, e.CellStyle.Font, b2, left + 2, top + 10, StringFormat.GenericDefault); } DataGridViewSelectedCellCollection dgvscc = this.dataGridView1.SelectedCells; foreach (DataGridViewCell dgvc in dgvscc) { if (e.RowIndex == 0 && e.RowIndex == dgvc.RowIndex && e.ColumnIndex == dgvc.ColumnIndex) { int left = e.CellBounds.Left; int top = e.CellBounds.Top; int right = e.CellBounds.Right; int bottom = e.CellBounds.Bottom; // 绘制背景,覆盖单元格区域 e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(10,36,106)), e.CellBounds); // 绘制边框 Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor); Pen gridLinePen = new Pen(gridBrush); e.Graphics.DrawLine(gridLinePen, right - 1, top, right - 1, bottom - 1); e.Graphics.DrawLine(gridLinePen, left, bottom - 1, right, bottom - 1); // 绘制文字 Brush b1 = new SolidBrush(Color.White); e.Graphics.DrawString((String)e.Value, e.CellStyle.Font, b1, left + 2, top + 1, StringFormat.GenericDefault); Brush b2 = new SolidBrush(Color.White); e.Graphics.DrawString((String)e.Value, e.CellStyle.Font, b2, left + 2, top + 10, StringFormat.GenericDefault); } } e.Handled = true; }