【问题标题】:How to change cell color in c#? [duplicate]如何在c#中更改单元格颜色? [复制]
【发布时间】:2017-05-12 15:43:02
【问题描述】:

我正在尝试根据存在和不存在的值更改数据表中的单元格颜色。我使用按钮来填充基于我的数据库的数据表, 我有 53 列(第 1 周到第 53 周 + 名称)。

【问题讨论】:

  • DefaultCellStyle?
  • 你试过什么? Google 肯定会在数据网格样式或您使用的任何控件方面找到很多热门。
  • 请指定控件类型的确切类型(DataGridView,DataGrid,可能是另一个控件)
  • @ChrisDunaway 是的,我几乎尝试了谷歌的所有热门答案,但都没有回答我的问题。
  • @YasharAliabasi 我使用了 datagridview,我不知道如何在这种问题中使用数组,尽管数组是我最好的解决方案。

标签: c# winforms datatable


【解决方案1】:

您可以处理DataGridView.CellFormatting Event 并在那里做出决定:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if(e.ColumnIndex == 0 && YourCondition)e.CellStyle.BackColor = System.Drawing.Color.Red;
}

【讨论】:

  • 它适用于我的所有细胞吗?我怀疑(虽然我还没有尝试过)所有的列或行都将被涂成绿色或红色。而不仅仅是特定的单元格。例如。在我的第一周我有这个名字|第 1 周 |第2周|我的名字|存在|缺席|以“存在”为值的单元格将被涂成绿色,以“不存在”作为值的第 2 周将被涂成红色
  • 是的,您可以通过 e.ColumnIndex 检查您的单元格,因为我添加到 if 条件
  • 你会在整个过程中帮助我吗?因为我没有任何关于这是如何工作的信息。我的教授只告诉我们如何填充数据网格,仅此而已。
  • 我不知道我会输入那个“你的条件”
  • 数据库中存在和不存在的类型是什么?
【解决方案2】:
  try
                {
                    if (e.Value != null)
                    {
                        // Check for the string "pink" in the cell.
                        string stringValue = (string)e.Value;
                        stringValue = stringValue.ToUpper();
                        if ((stringValue.IndexOf("PRESENT") > -1))
                        {
                            e.CellStyle.BackColor = Color.Green;
                        }
                        else
                        {
                            e.CellStyle.BackColor = Color.Red;
                        }
                    }
                }
                catch (Exception ex)
                {
                    e.CellStyle.BackColor = Color.Red;
                }

            }

【讨论】:

  • 我使用了这段代码,我需要做的就是重复 50 次
猜你喜欢
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 2017-11-02
相关资源
最近更新 更多