【问题标题】:C# DataGrid Cell - Change row forecolor IFC# DataGrid 单元格 - 更改行前景色 IF
【发布时间】:2021-03-10 03:00:54
【问题描述】:

如果该行中的单元格包含单词“WARNING”,我正在尝试更改数据网格中特定行的前景色。

 foreach (DataGridViewRow row in inclog.Rows)
        {
            if (inclog.SelectedCells[5].Value.ToString() == "WARNING")
            {

                inclog.SelectedRows[1].DefaultCellStyle.ForeColor = Color.Red;

            }
        }

我正在尝试更改代码、添加和删除位,但似乎无法做到。

【问题讨论】:

  • 只有在选择行时才会发生这种情况,或者这是一个错误?我也有点困惑,因为你在所有行上都使用了 foreach 循环,但你对这些行没有做任何事情。
  • 单元格的值是否必须只有“警告”或可以包含任何其他文本?例如“警告发生随机错误”?如果可以,请尝试修剪字符串并使用 .Contains 而不是 ==

标签: c# if-statement datagridview datagrid


【解决方案1】:

似乎与问题中的文字内容和代码正在做什么完全脱节。发布的代码实际上没有意义,我会假设问题中的文字所说的就是你想要的。因此,下面的解决方案将做文中描述的......

“我正在尝试更改数据网格中特定行的前景色,如果该行中的单元格包含单词“WARNING”。” ...

我能解读的是,对于网格中的“每一”行,如果该行中的一个单元格包含“警告”一词,那么,您希望将该行中的前景色(文本)设置为红色的。如果这是正确的,那么下面的代码应该可以工作。

在代码中,我们循环遍历网格中的每个“行”(如果存在则忽略“新”行),然后再循环遍历该行中的每个“单元格”。检查该单元格文本是否包含“警告”一词。如果单元格包含“警告”一词,则代码将该行的前景色设置为红色。然后“中断”出“Cells”循环,因为我们不需要进一步检查文本“Warning”。

foreach (DataGridViewRow row in inclog.Rows) {
  if (!row.IsNewRow) {
    foreach (DataGridViewCell cell in row.Cells) {
      if (cell.Value != null && cell.Value.ToString().Contains("Warning")) {
        row.DefaultCellStyle.ForeColor = Color.Red;
        break;
      }
    }
  }
}

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2015-12-16
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    相关资源
    最近更新 更多