我所用的方法是利用datagridview的cellpainting方法,重新绘制单元格,然后drawline()和drawstring()实现合并,但现在有一个问题,这个程序需要点击按钮实现单元格合并,但我不知道如何在buttonclick()方法中如何触发cellpainting()事件完成绘制,耽误了一天了,希望大家帮助。

解决方案 »

  1.   

    点击按钮后执行  datagridview.Refresh();
      

  2.   

    源代码和实现说明:
    http://www.codeproject.com/KB/grid/MergedDataGridViewControl.aspx还有这个!
    C# WinForm开发系列 - DataGridView
      

  3.   

    http://topic.csdn.net/u/20100609/13/4d9006e4-529e-4b30-91ae-9908f5806c58.html?54388
      

  4.   

    首先,谢谢你的回答,可能是我没有说清楚,在datagridview的cellpainting函数中,有一个DataGridViewCellPaintingEventArgs类型的参数,是指需要重绘的单元格所触发的事件,现在的主要问题是我先选中了需要合并的单元格,然后点击合并按钮,如何让cellpainting函数知道,我要绘制的这个单元格并触发cellpainting函数,到现在没有找到好的方法,太郁闷了。
      

  5.   

    选中单元格后合并?
    这样的话你首先要做的是选中单元格吧?在单击按钮事件里先获取选中的单元格,然后在事件调用中如:
    cellpainting(你选中的单元格,null)(如果需要传参数的话第二个参数也对应加上去),注意看事件里的函数参数不是有个参数为“sender”吗?
      

  6.   

    问题已经解决了,原来datagridview中有一个函数:InvalidateCell(columnindex,rowindex)能够强制系统重绘该单元格,谢谢你的关注,分给你了。