首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C#中更改DataGridViewRows的foreColor和BackColor

在C#中更改DataGridViewRows的foreColor和BackColor
EN

Stack Overflow用户
提问于 2017-03-10 04:58:46
回答 2查看 98关注 0票数 0

我想通过以下代码更改我的Dtgrdview中的行的前景色和背景色,其中iRemaining != 0的列:

代码语言:javascript
复制
foreach(DataGridViewRow DG in dtgrdUCBuyInvoices.Rows)
            if((Int64)DG.Cells["iRemaining"].Value != 0)
            {
                DG.DefaultCellStyle.BackColor = Color.Red;
                DG.DefaultCellStyle.ForeColor = Color.White;
            }

但是它不工作,颜色也不会改变!

我怎么才能修复它?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-10 05:13:44

似乎您试图在DataGridView呈现之外更改行的颜色。

让我们尝试将代码添加到DataGridViewRowPrePaint事件中

代码语言:javascript
复制
private void dtgrdUCBuyInvoices_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
  if ((Int64)dtgrdUCBuyInvoices.Rows[e.RowIndex].Cells["iRemaining"].Value != 0)
    {
      dtgrdUCBuyInvoices.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
      dtgrdUCBuyInvoices.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.White;
    }
}

并在初始化过程中注册:

代码语言:javascript
复制
dtgrdUCBuyInvoices.RowPrePaint += new DataGridViewRowPrePaintEventHandler(dtgrdUCBuyInvoices_RowPrePaint);
票数 1
EN

Stack Overflow用户

发布于 2017-03-10 05:27:56

我在这里只是猜测,但是你如何获取和比较这些值很可能是失败的。同样在您发布的代码中,如果单元格值不是0,那么您希望将整行设置为红色吗?下面的代码转换单元格的字符串值,如果不是零(0),它设置单元格的背景色和前景色。尝试下面的代码,看看它是否有帮助。

代码语言:javascript
复制
Int64 cellValue = 0;
foreach (DataGridViewRow DG in dtgrdUCBuyInvoices.Rows) {
  if (!DG.IsNewRow && DG.Cells["iRemaining"].Value != null) {
    Int64.TryParse(DG.Cells["iRemaining"].Value.ToString(), out cellValue);
    if (cellValue != 0) {
      DG.Cells["iRemaining"].Style.BackColor = Color.Red;
      DG.Cells["iRemaining"].Style.ForeColor = Color.White;
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42705281

复制
相关文章

相似问题

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