微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐