C#中dataGridView里面的字体变色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中dataGridView里面的字体变色相关的知识,希望对你有一定的参考价值。

我想变红色
可以这样实现吗?

参考技术A 首先判断两个datagridview行的内容是不是相同
定义一个
datagridviewcellstyle
样式
datagridviewcellstyle
cs
=
new
datagridviewcellstyle();
cs.backcolor
=
color.fromargb(192,
192,
192);
cs.forecolor
=
color.fromargb(192,
0,
0);
...........
将相同的行应用你定义的样式
datagridview1.rows[0].defaultcellstyle
=
cs;
datagridview2.rows[0].defaultcellstyle
=
cs;
别问我如何判断两个datagridview中的行是不是相同,这个只有你知道
参考技术B DefaultCellStyle属性,将外观下面的 ForeColor设置红色就行本回答被提问者采纳 参考技术C //变色
//记录当前页的数据总条数
int i = 0;
DataBase.Bind_DG(this.dgMsgList, strSql);
//由于DataGrid只能通过Items.Count属性取出当前页的数据总条数,而不是像DataGridView.Rows.Count取出所有的数据总条数
//j是用来数据源取的数据,i是用来改变DataGrid行的颜色
//CurrentPageIndex下标索引是从0开始的乘以PageSize每页显示多少项,例如判断第三页数据每页显示20条(2*20)从第四十条数据开始判断
//小于总数据数,其实后来想想也可以写成j<dgMsgList.CurrentPageIndex * dgMsgList.PageSize+dgMsgList.PageSize 这样循环次数少多了
for (int j = dgMsgList.CurrentPageIndex * dgMsgList.PageSize; j < ((DataTable)dgMsgList.DataSource).Rows.Count; j++)

//核心讲完了下面就很简单了还原DataGrid的数据源到DataRowView
DataRowView drv = ((DataTable)dgMsgList.DataSource).DefaultView[j];
//根据字段名取得数据
double score = Convert.ToDouble(drv["oldcost"]);
double newscore = Convert.ToDouble(drv["成本"]);
//如果两个字段值不相等就显示成红色也就是特殊显示
//这里的i就是当前页的项数索引
if (newscore != score && i < dgMsgList.PageSize)

//条件成立后可以改变该行的字体颜色该行的背景色等等可以做一切想做的。
//dgMsgList.Items[i].BackColor = System.Drawing.Color.Red;
dgMsgList.Items[i].ControlStyle.ForeColor = System.Drawing.Color.Red;
dgMsgList.Items[i].ControlStyle.Font.Bold = true;


i++;

DataCount = ((DataTable)dgMsgList.DataSource).Rows.Count;
//写完收工,任何程序一开始写不出来高性能的,都是慢慢修改来提高改善的,欢迎大家赐教。

以上是关于C#中dataGridView里面的字体变色的主要内容,如果未能解决你的问题,请参考以下文章

C#中,如何datagridview 中某一行的字体样式、颜色?

C#中,如何datagridview 中某一行的字体样式、颜色?

如何在C#中 禁止 dataGridView 自动添加行

C# 中 datagridview 绑定BindingList类型和更新

关于C#中 对于datagridview 单击任意一个单元格,获取那一行数据的语句

C#重绘DataGridView行