有条理地更改ultragrid中字幕的backgroundcolor

时间:2015-06-10 03:58:13

标签: ultragrid

我正在使用ultragrid 9.1。我将详细信息显示为cardview。我可以使用以下属性更改卡片标题的背面颜色:

Ultragrid.DisplayLayout.Override.CardCaptionAppearance.BackColor = System.Drawing.Color.Red

但是,我想有条件地更改标题的背面颜色而不是所有行。我无法找到相关属性来设置它。

1 个答案:

答案 0 :(得分:0)

我的问题已经解决了。内置属性中没有可用于设置标题的背景颜色。我不得不使用DrawFilter接口。

您可以通过此link找到有关此界面的更多信息:

您应该创建一个实现IUIElementDrawFilter的类。 在接口的GetPhasesToFilter方法中检查元素是否为CardCaptionUIElement,以及它是否返回其BeforeDrawBackColor阶段。然后在DrawElement方法中,您可以使用drawParams参数的DrawBackColor方法绘制背景。

然后,为超网格设置drawfilter。

 UltraGrid1.DrawFilter = New CustomDrawFilter()

Class CustomDrawFilter : Implements IUIElementDrawFilter

Public Function DrawElement(drawPhase As DrawPhase, ByRef drawParams As UIElementDrawParams) As Boolean Implements IUIElementDrawFilter.DrawElement
    Dim row = DirectCast(drawParams.Element.GetContext(), UltraGridRow)

    If (row.VisibleIndex Mod 2 = 0 And row.Selected = False) Then
        drawParams.AppearanceData.BackColor = Color.Red
        drawParams.DrawBackColor(drawParams.Element.RectInsideBorders)
        Return True
    End If

    Return False
End Function

Public Function GetPhasesToFilter(ByRef drawParams As UIElementDrawParams) As DrawPhase Implements IUIElementDrawFilter.GetPhasesToFilter
    If (TypeOf (drawParams.Element) Is CardCaptionUIElement) Then
        Return DrawPhase.BeforeDrawBackColor
    Else
        Return DrawPhase.None
    End If

End Function
End Class