Looking to change text appearance in cell in ColumnStyle.URL Column

rated by 0 users
This post has 2 Replies | 4 Followers

Not Ranked
Points 220
mpetrescu Posted: 01-30-2008 3:11 PM

For a speicific column in my WinGrid, I set the ColumnStyle to ColumnStyle.URL.  I am then trying to specifiy a specific font color for the cell when the row is selected.  I have tried various things such as setting the SelectedAppearance.ForeColor, and tyring to set the ButtonAppearance. ForeColor property, but haven't had any luck.  I have had luck with normal text columns, but I am guessing there must be a special method.  I was looking at FormattedLinkEditor, but wasn't having any luck.  Thank you for your help,

Mike

  • | Post Points: 20
Top 10 Contributor
Points 340,035
Infragistics Employee

 Hi Mike,

    The URL only honors two states: the normal state and the LinkClicked state. So there's no selected appearance for it.

    You can acheive what you want using a DrawFilter, though, and it's a pretty simply one. Here's a simple example of what the DrawFilter might look like:


        public class SelectedURLDrawFilter : IUIElementDrawFilter
        {
            #region IUIElementDrawFilter Members

            bool IUIElementDrawFilter.DrawElement(DrawPhase drawPhase, ref UIElementDrawParams drawParams)
            {
                // We are assuming that we got in here for the TextSectionUIElement in the
                // BeforeDrawForeGround phase, but that's the only phase we ever return from GetPhasesToFilter.

                // Get the grid row so we can see if it is selected.
                // We might also want to do the same thing for the cell to see if it's selected.
                UltraGridRow row = drawParams.Element.GetContext(typeof(UltraGridRow)) as UltraGridRow;

                // If we got a row and it is selected
                if (row != null && row.Selected)
                {
                    // Change the ForeColor to Red.
                    drawParams.AppearanceData.ForeColor = Color.Red;
                }

                // Return false, because we want the element to do it's normal drawing, using the
                // AppearanceData we changed.
                return false;               
            }

            DrawPhase IUIElementDrawFilter.GetPhasesToFilter(ref UIElementDrawParams drawParams)
            {
                // Watch for a TextSectionUIElement which is the element that draws URLs.
                if (drawParams.Element is Infragistics.Win.FormattedLinkLabel.TextSectionUIElement)
                {
                    // Return DrawForeGround so we can change the color.
                    return DrawPhase.BeforeDrawForeground;
                }

                return DrawPhase.None;
            }

            #endregion
        }

Mike Saltzman

Windows Forms Development Team Lead

Infragistics, Inc.

  • | Post Points: 50
Not Ranked
Points 220

Thank you very much for the quick help as it provided me the perfect solution.  I created this class, and then assigned it to the Ultragrid's DrawFilter.

  • | Post Points: 5
Page 1 of 1 (3 items) | RSS