如何在datagridview中为单元格创建页脚

时间:2015-05-14 03:24:24

标签: c# winforms datagridview cell

我需要使用包含两个部分的单元格创建DataGridView。一部分是该单元格的内容,例如0,1等值。剩下的部分是该单元格的页脚,就像单词文档的页脚一样,指的是该单元格的序数。

我无法附上任何图片,因此问题可能不明确。

无论如何都要提前感谢。

1 个答案:

答案 0 :(得分:7)

enter image description here

要创建包含额外内容的http://api.example.org/api/v1/foo/bar单元格,您需要对DataGridView事件进行编码。

首先,您将单元格设置为有足够的空间容纳额外内容,并根据需要布置正常内容..:

CellPainting

接下来我填写一些内容;我将额外的内容添加到单元格DataGridView DGV = dataGridView1; // quick reference Font fatFont = new Font("Arial Black", 22f); DGV .DefaultCellStyle.Font = fatFont; DGV .RowTemplate.Height = 70; DGV .DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter; 。对于包含更多字体等的更复杂的东西,你需要创建一个类或结构来保存它,也许也可以在Tags ..

Tags

以下是对DGV.Rows.Clear(); DGV.Rows.Add(3); DGV[1, 0].Value = "Na"; DGV[1, 0].Tag = "Natrium"; DGV[1, 1].Value = "Fe"; DGV[1, 1].Tag = "Ferrum"; DGV[1, 2].Value = "Au"; DGV[1, 2].Tag = "Aurum"; 事件进行编码的示例:

CellPainting

对于较长的多行脚注,您可以使用边界private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.RowIndex < 0) return; // header? nothing to do! if (e.ColumnIndex == yourAnnotatedColumnIndex ) { DataGridViewCell cell = dataGridView1[e.ColumnIndex, e.RowIndex]; string footnote = ""; if (cell.Tag != null) footnote = cell.Tag.ToString(); int y = e.CellBounds.Bottom - 15; // pick your font height e.PaintBackground(e.ClipBounds, true); // show selection? why not.. e.PaintContent(e.ClipBounds); // normal content using (Font smallFont = new Font("Times", 8f)) e.Graphics.DrawString(footnote, smallFont, cell.Selected ? Brushes.White : Brushes.Black, e.CellBounds.Left, y); e.Handled = true; } } 而不仅仅是x&amp; y坐标..