再散一帖:关于双行表头的的DataGridView的实现
这个实现,视觉效果方面基本上没有问题了,不过执行速度还有很大提升的空间(比如,我不加区分的每次画主标题就浪费了很多时间)。但引入Timer控件的使用,刷新时闪烁的问题已经完美解决,本着“够用就行”的原则我不打算改进了...
代码:应该可以这样直接帖的,试试
/// <summary>
/// 支持双行表头的的DataGridView
///
/// 用法示例:
/// dg.AddSpanHeader(4, 4, "主标题 ");
/// 则将第4列开始的4列设为双行表头,主标题为“主标题”,子标题为原来的 Value 值
///
/// phommy@hotmail.com
/// </summary>
public partial class DataGridViewEx1 : DataGridView
{
public DataGridViewEx1()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs pe)
{
// TODO: 在此处添加自定义绘制代码
// 调用基类 OnPaint
base.OnPaint(pe);
}
private struct SpanInfo //表头信息
{
public SpanInfo(string Text, int Position, int Left, int Right)
{
this.Text = Text;
this.Position = Position;
this.Left = Left;
this.Right = Right;
}
public string Text; //列主标题
public int Position; //位置,1:左,2中,3右
public int Left; //对应左行
public int Right; //对应右行