Text color of disabled control - how to change it

Mqati picture Mqati · May 14, 2011 · Viewed 40.9k times · Source

During the creation of my awesome Matching Game ;) I found a problem that is completely out of reach.

When the player chooses two labels with symbols on them I want to lock all the other labels for 4 seconds.

But when I do that, the forecolor of all the labels changes to grey and the symbols are visible. My question is - is there a method to change the ForeColor of a disabled label in visual c#?

The project is a WinForm application.

At the moment I set the color of a label in code this way:

label1.ForeColor = lable1.BackColor;

When the user clicks the label I change it to:

lable1.ForeColor = Color.Black;

Answer

Allender picture Allender · May 14, 2011

Just create your own label with a redefined paint event:

protected override void OnPaint ( System.Windows.Forms.PaintEventArgs e )
{
    if ( Enabled )
    {
        //use normal realization
        base.OnPaint (e);
        return;
    }
    //custom drawing
    using ( Brush aBrush = new SolidBrush( "YourCustomDisableColor" ) )
    {
        e.Graphics.DrawString( Text, Font, aBrush, ClientRectangle );
    }
}

Be careful with text format flags during text drawing.