日期:2014-05-17  浏览次数:21836 次

如何让Winform的DataGridView合并表头
如何让winform 的DataGridView的列名合并。。
如下图:
 ------------------------------
|    付款方式    |             |
 -----------------   销售员
|  现金 |   刷卡  |             |
--------------------------------

每一行为“付款方式”跨两列。。这两列的列名再分成两行。。
第二行再分成二列。。

------解决方案--------------------
我想到一个方法,你可以把一个tableLayoutPanel放到你的列头(
------解决方案--------------------
 现金 
------解决方案--------------------
 刷卡 
------解决方案--------------------
 
------解决方案--------------------
)这两列上,来覆盖它,然后再用
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
            if (e.RowIndex == -1 & e.ColumnIndex == 0)
            {
                Size dataGridViewSize = this.dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Size;
                Point p = this.dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Location;

                p.Offset(this.dataGridView1.Left + (dataGridViewSize.Width - 15) / 2, this.dataGridView1.Top + (dataGridViewSize.Height - 14) / 2);
                this.CheckBoxAll.Location = p;
                this.CheckBoxAll.Size = new Size(15, 14);
                this.CheckBoxAll.Visible = true;
                this.CheckBoxAll.BringToFront();
            }
        }
类似方式来做,一样可以,但是根本解决问题,我想你还是写一个类似于DataGridViewButtonCell和DataGridViewButtonColumn的两个来搞
------解决方案--------------------
DataGridView 不支持合并列头的 你可以在一列中显示两列的数据 但要像web那种合并列头没有办法

参考 http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/fea3dcff-5447-450a-8f7c-bb1c4f63371d/
--------------------------------------------