首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用默认梯度样式绘制DataGridView ColumnHeader

使用默认梯度样式绘制DataGridView ColumnHeader
EN

Stack Overflow用户
提问于 2014-07-27 01:03:48
回答 1查看 1.8K关注 0票数 0

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

有没有一种方法可以使用一些我不知道的内部DataGridView呈现方法来实现呢?

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

摘要:

我拥有的:

我想要的:

EN

回答 1

Stack Overflow用户

发布于 2014-07-27 01:35:42

重写-1 RowIndexRowIndex事件,并根据您的意愿绘制它。

或者,您也可以创建一个继承自DataGridViewColumnHeaderCell的新类,并为此重写pain方法,但是还有其他一些步骤(我不记得马上就记得了),您必须做一些其他步骤才能让网格使用派生类,这是一种痛苦。

编辑:

这里有一个更好地解释它的链接:http://social.msdn.microsoft.com/Forums/windows/en-US/74959006-7a8a-4487-ab54-f2aac2bf7196/custom-paint-of-datagridview-column-headers

有些摘录是为了防止链接失效:

在油漆覆盖中,您将执行如下操作:

代码语言:javascript
复制
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项目经理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24976952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档