如何设置DataGridView的表头单元格边框颜色

13

DataGridViewGridColor属性可以设置分隔单元格(即每个单元格的边框)的网格线颜色。

但是它无法更改标题单元格(即标题单元格的边框)的网格线颜色。
我该如何实现这一点?
是否有一个属性可以用来实现这个效果?

1.使用GridColor属性的示例
using <code>GridColor</code> property
2.我的需求的示例
enter image description here

正如TnTinMn所说,GridColor属性只对CellBorderStyle=DataGridViewCellBorderStyle.Single的单元格有效。
结果如下图所示。
它不能影响分隔标题单元格的网格线。

3.使用CellBorderStyle属性的示例 enter image description here

经过另一次尝试,我成功了。
4.使用`EnableHeadersVisualStyles = false'的示例 enter image description here

(解决方案)总结:
1.使用GridColor设置网格线的颜色。
2.将CellBorderStyleColumnHeadersBorderStyleRowHeadersBorderStyle设置为Single。3. 将 EnableHeadersVisualStyles 设为 false


所以你不想改变实际单元格的颜色,只是分隔它们的线?这似乎是一个奇怪的要求? - David
实际上,我想设置标题单元格边框的颜色。也许我没有表达清楚。 - niaomingjian
3
我认为OP的问题很明确。如果需要更多细节,最好在评论中提出问题,而不是关闭这样的问题。 - Reza Aghaei
@the_lotus 我想知道是否有简单的方法来实现这个。 - niaomingjian
我需要做什么才能重新打开问题? - niaomingjian
显示剩余2条评论
2个回答

2
完成你列出的三件事情,然后:
4. 设置 CellBorderStyle = DataGridViewCellBorderStyle.Raised - 这将只允许你的着色显示在标题中,但是因为你现在将主体单元格边框设置为 3D 类型(即 raisedsunken 等,而不是 singlenone 等),主体单元格将具有系统默认样式(可能是灰色)。

Example


0

虽然有点晚,但如果你想保持EnableHeadersVisualStyles = true,你可以更改AdvancedColumnHeaderBorderStyleAdvancedRowHeadersBorderStyleAdvancedCellBorderStyle的边框属性。要解决@niaomingjian的示例,你需要将它们更改为:

dgv.AdvancedColumnHeadersBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
dgv.AdvancedColumnHeadersBorderStyle.Left = DataGridViewAdvancedCellBorderStyle.None;
dgv.AdvancedColumnHeadersBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.Single;
dgv.AdvancedColumnHeadersBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.Single;

dgv.AdvancedCellBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
dgv.AdvancedCellBorderStyle.Left = DataGridViewAdvancedCellBorderStyle.None;
dgv.AdvancedCellBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.Single;
dgv.AdvancedCellBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.Single;

dgv.AdvancedRowHeadersBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
dgv.AdvancedRowHeadersBorderStyle.Left = DataGridViewAdvancedCellBorderStyle.None;
dgv.AdvancedRowHeadersBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.Single;
dgv.AdvancedRowHeadersBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.Single;

AdvancedColumnHeaderBorderStyle.AllAdvancedRowHeadersBorderStyle.AllAdvancedCellBorderStyle.All设置为单一样式,似乎有不同的工作方式,因此您需要分别调整每个边缘以触发这种样式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接