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

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

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

无论如何,提前谢谢.

解决方法

要使用额外内容创建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中.

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& y坐标.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...