下面的示例代码接管了 CardView.CustomDrawCardField 事件来绘制分类字段。 这些字段被用于对数据字段进行逻辑分组。

此事件处理程序检查当前被绘制的列是否绑定到一个数据字段。 如果没有,则把此字段绘制为分类字段。 这意味着该列的标题被居中绘制,并且不显示其他数据。 下面的插图展示了一个示例。

C#CopyCode image复制代码
using DevExpress.Utils;
using DevExpress.XtraGrid.Views.Base;

private void cardView1_CustomDrawCardField(object sender, RowCellCustomDrawEventArgs e) {
   if(e.Column.FieldName != "") return;
   e.Graphics.FillRectangle(e.Cache.GetSolidBrush(SystemColors.Control), e.Bounds);
   e.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
   e.Appearance.Font = e.Cache.GetFont(e.Appearance.Font, FontStyle.Bold);
   e.Appearance.DrawString(e.Cache, e.Column.Caption, e.Bounds);
   e.Handled = true;
}
Visual BasicCopyCode image复制代码
Imports DevExpress.Utils
Imports DevExpress.XtraGrid.Views.Base

Private Sub CardView1_CustomDrawCardField(ByVal sender As Object, _
ByVal e As RowCellCustomDrawEventArgs) Handles CardView1.CustomDrawCardField
   If Not e.Column.FieldName = "" Then Exit Sub
   e.Graphics.FillRectangle(e.Cache.GetSolidBrush(SystemColors.Control), e.Bounds)
   e.Appearance.TextOptions.HAlignment = HorzAlignment.Center
   e.Appearance.Font = e.Cache.GetFont(e.Appearance.Font, FontStyle.Bold)
   e.Appearance.DrawString(e.Cache, e.Column.Caption, e.Bounds)
   e.Handled = True
End Sub