我正在使用ultragrid 9.1。我将详细信息显示为cardview。我可以使用以下属性更改卡片标题的背面颜色:
Ultragrid.DisplayLayout.Override.CardCaptionAppearance.BackColor = System.Drawing.Color.Red
但是,我想有条件地更改标题的背面颜色而不是所有行。我无法找到相关属性来设置它。
答案 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