Infragistics的的UltraGrid:点击时的GroupBy行前景色改变(Infragis

2019-09-29 10:43发布

在C#的WinForms使用的Infragistics的UltraGrid:

我有条件地改变在网格上的一些GroupByRows的前景色的颜色。 当用户点击该行,颜色变回主动/选择/热跟踪/任何颜色,直到他们点击别的东西。 我想,我已经有条件地着色,以永远不变的行的文本颜色。 下面是我如何设置颜色:

Row.Appearance.ForeColor = System.Drawing.Color.Orange;

任何想法如何使它坚持甚至被点击行时?

谢谢!

Answer 1:

这可以用一个平局过滤设置,因为这将适用于在任何时候描述的前景色来完成。

一个简单的例子是下面的拉伸滤波器这将使所有组由具有一个整数值,甚至是橙色的行:

public class GroupByRowDrawFilter:IUIElementDrawFilter
{
    public bool DrawElement(DrawPhase drawPhase, ref UIElementDrawParams drawParams)
    {
        GroupByRowDescriptionUIElement element = (GroupByRowDescriptionUIElement)drawParams.Element;
        if (element.GroupByRow.Value is int)
        {
            int value = (int)element.GroupByRow.Value;
            if (value % 2 == 0)
            {
                drawParams.AppearanceData.ForeColor = Color.Orange;
            }
        }

        return false;
    }

    public DrawPhase GetPhasesToFilter(ref UIElementDrawParams drawParams)
    {
        if (drawParams.Element is GroupByRowDescriptionUIElement)
            return DrawPhase.BeforeDrawElement;
        return DrawPhase.None;
    }
}

要应用抽奖过滤器中使用下面的代码行:

this.ultraGrid1.DrawFilter = new GroupByRowDrawFilter();

请注意,这种方法要求的条件是在抽奖过滤器。 如果这不适合你,你可以修改你的逻辑,你正在设置前景色设置GroupByRow的标签属性,而不是再检查Tag属性抽奖过滤器,以确定是否需要申请你的逻辑。



Answer 2:

我想你也应该改变

grd.DisplayLayout.Override.SelectedRowAppearance.ForeColor = System.Drawning.Color.Orange;

或更好

grd.DisplayLayout.Override.GroupByRowAppearance.ForeColor = System.Drawning.Color.Orange;

很抱歉,但我从PC在那里我可以测试了。

通常,这些特性可以在InitializeLayout事件你在哪里得到事件参数的内部布局对象有效地改变。

e.Layout.Override.GroupByRowAppearance.ForeColor = Color.Orange;

编辑:目前,我已经找到了唯一的解决办法是下面的

    private void grd_BeforeRowActivate(object sender, RowEventArgs e)
    {
        // You need to add the additional logic required by you to
        // determine which rows need to have the forecolo changed...
        if (e.Row.IsGroupByRow == true)
            grd.DisplayLayout.Override.ActiveRowAppearance.ForeColor = Color.Orange;
        else
            grd.DisplayLayout.Override.ResetActiveRowAppearance();
    }


Answer 3:

Infragistics的说:

在“能力有对GroupByRows积极选择条件露面”已被确定为新的产品创意



文章来源: Infragistics UltraGrid: GroupBy row ForeColor changes when clicked