我有一个与左边类似的DataGridView设置。我有一些列用于显示状态/错误的图像。这个很好用。我的问题是,我真的不喜欢将每一列划分为这些列的部分的样子。理想情况下,我希望让列标题绘制得好像它们是一个列标题,因此它看起来像右边的列标题。
有没有一种方法可以使用一些我不知道的内部DataGridView呈现方法来实现呢?

我试着查看Reflector中的DataGridView代码,看看它在哪里进行的列标题绘制,但是我什么也找不到。我想我也许能够复制它正在做的事情,只需扩展单元格边界来覆盖前4列中的每一列。
摘要:
我拥有的:

我想要的:

发布于 2014-07-27 01:35:42
重写-1 RowIndex的RowIndex事件,并根据您的意愿绘制它。
或者,您也可以创建一个继承自DataGridViewColumnHeaderCell的新类,并为此重写pain方法,但是还有其他一些步骤(我不记得马上就记得了),您必须做一些其他步骤才能让网格使用派生类,这是一种痛苦。
编辑:
这里有一个更好地解释它的链接:http://social.msdn.microsoft.com/Forums/windows/en-US/74959006-7a8a-4487-ab54-f2aac2bf7196/custom-paint-of-datagridview-column-headers
有些摘录是为了防止链接失效:
在油漆覆盖中,您将执行如下操作:
if (e.RowIndex == -1)
{
e.Graphics.FillRectangle(Brushes.Blue, e.CellBounds);
e.Paint(e.ClipBounds, (DataGridViewPaintParts.All & ~DataGridViewPaintParts.Background));
e.Handled = true;
}如果使用类重写,请记住所有这些:
如果创建自己的类,则可以将列的HeaderCell属性设置为自定义标头类的实例(在重写值之前,您可能希望从标题单元格中复制一些属性,例如文本)。还可以创建自定义列类,该类将HeaderCell设置为构造函数中的自定义单元格。 如果要对所有列执行此操作,请处理ColumnAdded事件,以便知道何时需要设置自定义标头单元格。
所有这一切,在编辑部分的我的答案是归因于Mark在上面的链接,至少在2006年的DataGridView项目经理。
https://stackoverflow.com/questions/24976952
复制相似问题