如何获取 datagridview 单元格的 Style.BackColor

Posted

技术标签:

【中文标题】如何获取 datagridview 单元格的 Style.BackColor【英文标题】:How to get the Style.BackColor of a datagridview cell 【发布时间】:2014-07-13 17:32:56 【问题描述】:

使用 VS2010 VB.NET,我有一个 datagridview (dgv),我根据某个值设置单元格的背景颜色。这个特定的单元格不存储任何信息,因此我不能使用该单元格中的数据来确定背景颜色。

我目前的尝试完全失败了,MSDN 只针对“设置”而不是“获取”单元格的背景颜色。

我试过的代码”

if dgvNotes.Rows(clickedCell.RowIndex).Cells(1).Style.BackColor.ToString = "Red" then

if dgvNotes.Rows(clickedCell.RowIndex).Cells(1).Style.BackColor = Color.Red then

我无法找到有关该主题的太多信息,因为各种编码网站上的大多数帖子都集中在“设置”背景颜色。

有什么方法可以在填充 dgv 后确定单元格背景颜色? 谢谢

【问题讨论】:

【参考方案1】:

写入单元格点击事件

// using vb.net
System.Drawing.Color c = dgvNotes.Rows(e.RowIndex).Cells(1).Style.BackColor;

//using c#
System.Drawing.Color c = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor;

【讨论】:

感谢您的回复,这也是我一直在寻找的答案!!。我修改了代码,使其对 VB 更友好。 Dim CellBkColor As System.Drawing.Color = dgvNotes.Rows(e.RowIndex).Cells(1).Style.BackColor MsgBox(CellBkColor.ToString)【参考方案2】:

在点击事件中

if dgvNotes.Rows(clickedCell.RowIndex).Cells(1).Style.BackColor = Color.Red then

【讨论】:

【参考方案3】:

这对我不起作用

我有这段代码用于设置单元格颜色和其他属性

    public static void SetDgvHeader(DataGridView dgv,DataGridView clonedgv,string tarih,string[] dgv_Headers)
    
        dgv.Rows.Clear();
        dgv.ColumnCount = dgv_Headers.Length;
        dgv.RowHeadersVisible = false;
        int dayNbr = int.Parse(datenbr.txt);
        dgv.Rows.Add(dayNbr);
        for (int i = 0; i < dgv_Headers.Length; ++i)
        
            if (i == 1 || i == 3 || i == 5)
            
                dgv.Columns[i].Width = 20;
                dgv.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            
            else
            
                dgv.Columns[i].Width = 78;
                clonedgv.Columns[i].Width = 78;
            
            dgv.Columns[i].HeaderText = dgv_Headers[i];
            dgv.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
            dgv.Columns[i].ReadOnly = true;
        
        for (int i = 0; i < dayNbr; ++i)
        
            dgv.Rows[i].Height = 20;
            for (int a = 0; a < dgv_Headers.Length; ++a)
            
                dgv.Rows[i].Cells[a].Style.BackColor = Color.White;
                dgv.Rows[i].Cells[a].Value = "";
           
        
        dgv.Height = (dayNbr* dgv.Rows[0].Height) + 25;
        dgv.AllowUserToAddRows = false;

当我评论我添加白色的行时,我得到了这个

如果我禁止评论斜线

我明白了

【讨论】:

以上是关于如何获取 datagridview 单元格的 Style.BackColor的主要内容,如果未能解决你的问题,请参考以下文章

如何获取与表连接绑定的 Row datagridview selectedItem 的每个单元格的值?

DataGridView获取或者设置当前单元格的内容

vb.net中如何获得DataGridView单元格内容

datagridview DragDrop 实现拖放后 获取所在单元格的位置

如何让datagridview单元格只能输入数字 C#

选定单元格的 Datagridview 平均值