DataGridView 设置行的颜色
1.webform
在DataGridView的RowDataBound事件裡判斷並修改:
if(e.Row.Cells[n].Text== "0 ")
{
e.Row.Attributes.Add( "bgColor ", "red ");
}
else if(e.Row.Cells[n].Text> "500 ")
{
e.Row.Attributes.Add( "bgColor ", "green ");
}
//這裡的n是你的列qty的下標值
2.winform
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
if (e.RowIndex > = dataGridView1.Rows.Count - 1)
return;
DataGridViewRow dgr = dataGridView1.Rows[e.RowIndex];
try
{
if (dgr.Cells[ "列名 "].Value.ToString() == "比较值 ")
{
dgr.DefaultCellStyle.ForeColor = 设置的颜色;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//如果 "小明 "在第一列
DataGridViewCellStyle style = new DataGridViewCellStyle();
foreach(DataGridViewRow aRow in dataGridView1.Rows)
{
if(aRow.Cells[0].Value.ToString() == "小明 ")
{
style.BackColor=Color.Blue;
aRow.DefaultCellStyle=style;
}
}
或者添加CellPainting事件,比如:
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex == 2 && e.ColumnIndex> =0)
{
using (SolidBrush brush = new SolidBrush(Color.Red))
{
e.Graphics.FillRectangle(brush, e.CellBounds);
e.Handled = true;
}
}
}
分别设置每一个列的DefaultCellStyle 属性就可以了,比如下面的代码:
DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle();
dataGridViewCellStyle1.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.BackColor = Color.AliceBlue;
dataGridViewCellStyle1.ForeColor = Color.Red;
dataGridViewCellStyle1.SelectionBackColor = Color.Fuchsia;
dataGridViewCellStyle1.SelectionForeColor = Color.Yellow;
this.fParentDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1;
想必上面的代码你很清楚,DataGridView控件无法实现你的需求,两个解决办法:
1、自己扩展DataGridView控件,使之实现你的要求。
2、找第三方控件。
这里我用过DevExpress的GridControl控件,功能非常强大,完全可以实现这个功能,我给出部分代码,你看看就明白了:(它可以直接设置每个单元格的外观)
using DevExpress.XtraGrid.Views.Grid;
// ...
private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) {
GridView view = sender as GridView;
if(e.RowHandle >= 0) {
string category = view.GetRowCellDisplayText(e.RowHandle, view.Columns["Category"]);
if(category == "Beverages") {
e.Appearance.BackColor = Color.Salmon;
e.Appearance.BackColor2 = Color.SeaShell;
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 个人数据保全计划:从印象笔记迁移到joplin
· Vue3.5常用特性整理
· 重拾 SSH:从基础到安全加固
· 为什么UNIX使用init进程启动其他进程?