我有一个类似于左边的DataGridView设置。我有一些用于图像的列来显示状态/错误。这很好用。我的问题是,我不太喜欢将每列分成这些列的部分。理想情况下,我希望列标题绘制好像它们是一个列标题,所以它看起来像右边的那个。
有没有办法使用我不知道的一些内部DataGridView渲染方法来做到这一点?
我试图查看Reflector中的DataGridView代码,看看它实际上在哪里做了列标题绘画,但我找不到任何东西。我想我可以复制它正在做的事情,只是扩展单元格边界以覆盖前4列中的每一列。
要点:
我有什么:
我想要的是什么:
答案 0 :(得分:0)
覆盖-1 CellPainting
的{{1}}事件并根据需要进行绘制。
或者,您可以创建一个继承自RowIndex
的新类并覆盖其中的paint方法,但是还有其他一些步骤(我不记得)如何使网格使用你的派生类,这是一种痛苦。
编辑:
链接死亡时的一些摘录:
在绘画覆盖中,您将执行以下操作:
DataGridViewColumnHeaderCell
如果您使用班级覆盖,请记住以下所有内容:
如果你创建自己的类,那么你可以a)设置列 HeaderCell属性为您的自定义标题类的实例(您是' ll 可能想要从标题中复制一些属性,如Text 在覆盖值之前当前存在的单元格)。你也可以 创建一个自定义列类,将HeaderCell设置为您的自定义 构造函数中的单元格。
如果要对所有列执行此操作,请处理ColumnAdded事件 所以你知道何时需要设置自定义标题单元格。
我的回答的编辑部分中的所有这些都归功于上面链接中的Mark Rideout,至少是2006年的DataGridView程序经理。