再散一帖:关于双行表头的的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;                     //对应右行