c# - 基础设施 UltraGrid : GroupBy row ForeColor changes when clicked

标签 c# winforms infragistics ultrawingrid

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

我有条件地更改网格上某些 GroupByRows 的前景色的颜色。当用户单击该行时,颜色会变回事件/选定/热跟踪/任何颜色,直到他们单击其他内容。我希望有条件着色的行的文本颜色永远不会改变。这是我设置颜色的方法:

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

知道如何使其即使在单击该行时也能粘住吗?

谢谢!

最佳答案

这可以通过绘制过滤器来设置描述的前景色来完成,因为这始终适用。

一个简单的示例是以下绘制过滤器,它将使所有具有橙色整数值的行进行分组:

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();

请注意,此方法要求条件位于绘制过滤器中。如果这对您不起作用,您可以修改当前设置 ForeColor 的逻辑以设置 GroupByRow 的 Tag 属性,然后检查绘制过滤器中的 Tag 属性以确定是否需要应用您的逻辑。

关于c# - 基础设施 UltraGrid : GroupBy row ForeColor changes when clicked,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11142675/

相关文章:

c# - 如何以编程方式突出显示 DateTimePicker 中的特定部分?

vb.net - UltraGrid 获取所有单元格

asp.net - 基础设施 WebGrid 与 Telerik Grid

JavaScript 上的 C# httpwebrequest

c# - 为什么使用对象初始值设定项可以使对象保持事件状态?

c# - 提交应用程序设置更改

javascript - 获取第三层 igHierarchicalGrid 的子级

c# - VS 查看内存窗口

c# - 使用 .net 标准 2.0 将 .net4.0 旧库转换为多个目标会出现 HtmlString 引用错误

c# - 如何更改 PictureBox 的大小?