DataGrid使用技巧(二)
------------如何实现多行表头
有时候听有些朋友抱怨.NET的DataGrid不是很好用。就我个人的体会,DataGrid的功能非常强大,可以使我们随心所欲的完成各种各样的工作,可惜就是实现起来不够简单明了。我对平时经常碰到的一些问题积累了一些解决的方法,现在把它们总结一下供大家参考。
比较经常碰到的一个问题是:我们希望DataGrid的表头是多行的(图1)。我在网上找了很久也找不到解决的方法,后来想到了DataGrid的CaptionText和CaptionFont属性。于是我就想能不能在Caption的显示区域画出多行表头。下面的示例代码实现了这个想法,结果如图1所示。
首先需要编写一个类来表示自画的表头,这个类将记录表头的显示文本、图标和属于它管辖的列的信息。
//表头类
public class TopHeaderColumn
{
public TopHeaderColumn()
{
this.columnCollection=new ArrayList();
}
private string caption;
//表头的显示文本
public string Caption
{
get {return caption;}
set {caption=value;}
}
private ArrayList columnCollection;
//用来记录属于表头管辖的各列的信息(通过往集合里添加object)
public ArrayList ColumnCollection
{
get {return this.columnCollection;}
set {this.columnCollection=value;}
}
private int width;
//表头的宽度
public int Width
{
get {return wid