在本教程中您将学习如何使用事件更改数据单元格样式,您将从要给显示任务数据的网格开始,并且没有应用条件格式。通过处理GridView.RowStyle事件,您将对Priority字段值为High的行应用不同的背景颜色。然后如果Status设置为New,您将使用GridView.RowCellStyle事件来突出显示这些行中的Status单元格。
P.S:DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
获取DevExpress WinForms v24.1正式版下载
开始
从具有显示任务数据的网格且未应用条件格式的应用程序开始,运行应用程序,看看数据是什么样子的。
自定义单个行的外观
编写GridView.RowStyle事件处理程序,当前处理的行是使用事件的RowEventArgs.RowHandle参数标识的,该行的外观设置是使用 RowStyleEventArgs.Appearance 参数设置的。
C#
private void gridView_RowStyle(object sender, RowStyleEventArgs e) {
GridView View = sender as GridView;
if (e.RowHandle >= 0) {
string priority = View.GetRowCellDisplayText(e.RowHandle, View.Columns["Priority"]);
if (priority == "High") {
e.Appearance.BackColor = Color.FromArgb(150, Color.LightCoral);
e.Appearance.BackColor2 = Color.White;
}
}
}
运行应用程序并查看结果。“high priority行现在以指定的渐变背景显示,梯度应用于整个行,而不是单个单元格。
自定义单个单元格的外观
返回到设计时并自定义单个单元格。为此处理GridView.RowCellStyle事件,它为您提供了CustomRowCellEventArgs.Column和CustomRowCellEventArgs.RowHandle参数,用于标识正在处理的单元格。如果Status列中的单元格值为New,则处理程序将修改这些单元格,前提是记录的Priority设置为High。
C#
private void gridView_RowCellStyle(object sender, RowCellStyleEventArgs e) {
GridView View = sender as GridView;
if (e.Column.FieldName == "Status") {
string status = View.GetRowCellDisplayText(e.RowHandle, View.Columns["Status"]);
string priority = View.GetRowCellDisplayText(e.RowHandle, View.Columns["Priority"]);
if (status == "New" && priority == "High") {
e.Appearance.BackColor = Color.FromArgb(150, Color.Salmon);
e.Appearance.BackColor2 = Color.FromArgb(150, Color.Salmon);
}
}
}
运行应用程序,您会看到GridView.RowCellStyle事件强加的外观设置覆盖了GridView.RowStyle事件中的设置。