c# - 根据值更改 DataGridView 列的颜色
问题描述
我正在尝试根据其值更改 DataGridView 中列的颜色。这是我的代码。但是,我的if
陈述中有错误。
如果它的值小于零,我想将 Column 的背景颜色更改为 Color.Red。
private void DataColor()
{
foreach (DataGridViewColumn col in MyDataGrid.Columns)
if (Convert.ToInt32(col[5].Value) < 0)
{
MessageBox.Show("Test");
}
}
我需要的输出:
解决方案
看看以下是否适用于您使用 .NET Framework 4.8 完成的操作。将 DataGridView 添加到新表单,添加下面的代码,将表单名称更改为您的表单名称。
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace DataGridViewCellFormatting1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Shown += OnShown;
}
private void OnShown(object sender, EventArgs e)
{
dataGridView1.DataSource = MockedDataTable.Table();
dataGridView1.CellFormatting += DataGridView1OnCellFormatting;
}
private const string _amountColumnName = "Amount";
private void DataGridView1OnCellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (!dataGridView1.Columns[e.ColumnIndex].Name.Equals(_amountColumnName)) return;
if (e.Value == null || !int.TryParse(e.Value.ToString(), out var amount)) return;
dataGridView1.Rows[e.RowIndex].Cells[_amountColumnName].Style.BackColor = amount >0 ?
Color.Empty :
Color.Red;
}
}
public class MockedDataTable
{
public static DataTable Table()
{
var dt = new DataTable();
dt.Columns.Add(new DataColumn()
{
ColumnName = "id",
DataType = typeof(int),
AutoIncrement = true,
AutoIncrementSeed = 1
});
dt.Columns.Add(new DataColumn() { ColumnName = "Amount", DataType = typeof(int) });
dt.Rows.Add(null, 200);
dt.Rows.Add(null, 1000);
dt.Rows.Add(null, -3200);
dt.Rows.Add(null, -300);
dt.Rows.Add(null, 500);
return dt;
}
}
}
推荐阅读
- elasticsearch - 在 Elasticsearch 中,我如何检索按销售商店分组的产品?
- apache-spark - 从 PySpark 数组中删除 NULL 项
- ios - Flutter:Pod install 突然报错
- python-3.x - os.environ 从无引发 keyerror(key)
- google-cloud-platform - 您可以使用 terraform 在 GCP 上创建用户吗?
- jestjs - 在 package.json 的 jest 配置中寻找 testPathIgnorePatterns 的正则表达式
- java - React Native:JAVA_HOME 设置为无效目录:C:\Program Files\Java\jdk1.8.0_181
- python - 癌症诊断模型有错误我无法理解
- python - 在熊猫数据帧上应用 IF 条件
- scala - 如何用 Akka 做类型安全、线程安全的边界?