我想设置datagridview的行标题和列标题交集单元格的背景颜色。我尝试了下面的代码,但它抛出了一个例外,该数字应该是非负数。
DataGridViewCell cell = dgview.Rows[-1].Cells[-1];
cell.Style.BackColor = Color.Red;
我想设置颜色如下图所示
我还提到了下面的文章,但它显示了如何设置整个列标题的颜色。但我的要求是设置单个单元格的颜色 - 行 - 列标题交集单元格。
how-to-change-the-color-of-winform-datagridview-header
非常感谢任何帮助。谢谢。
此致
维奈
答案 0 :(得分:4)
将当前的ColumnHeadersDefaultCellStyle存储在变量中。
将ColumnHeadersDefaultCellStyle设置为您希望角落的方式。
然后将所有列标题更改为您希望列0到...返回旧样式的方式。
下面是一个名为“MyForm”的表单示例。此示例显示MyForm的默认构造函数。
示例:
public MyForm()
{
InitializeComponent();
// insert code here to add columns ...
// ...
// ...
// ...
DataGridViewCellStyle oldDefault = dgview.ColumnHeadersDefaultCellStyle.Clone();
dgview.ColumnHeadersDefaultCellStyle.BackColor = Color.Red;
foreach (DataGridViewColumn item in dgview.Columns)
{
item.HeaderCell.Style = oldDefault;
}
}
答案 1 :(得分:1)
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex == -1 && e.ColumnIndex == -1)
{
using (Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor))
{
using (Brush backColorBrush = new SolidBrush(Color.Red))
{
using (Pen gridLinePen = new Pen(gridBrush))
{
// Clear cell
e.Graphics.FillRectangle(backColorBrush, e.CellBounds);
//Bottom line drawing
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom-1 , e.CellBounds.Right, e.CellBounds.Bottom-1);
e.Handled = true;
}
}
}
}
答案 2 :(得分:0)
这有点像黑客,但是使用设计器在DataGridView中添加一个PictureBox(如果你正在使用VS)并初始化它的属性,例如:
pictureBox1.BackColor = Color.Red;
pictureBox1.Width = dgView.RowHeadersWidth;
pictureBox1.Height = dgView.ColumnHeadersHeight;