How to avoid color changes when button is disabled?
33,500
Solution 1
You need to use the EnabledChanged event to set the desired color. Here is an example.
private void Button1_EnabledChanged(object sender, System.EventArgs e)
{
Button1.ForeColor = sender.enabled == false ? Color.Blue : Color.Red;
Button1.BackColor = Color.AliceBlue;
}
Use the desired colors according to your requirement.
Also you need to use the paint event.
private void Button1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
dynamic btn = (Button)sender;
dynamic drawBrush = new SolidBrush(btn.ForeColor);
dynamic sf = new StringFormat {
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center };
Button1.Text = string.Empty;
e.Graphics.DrawString("Button1", btn.Font, drawBrush, e.ClipRectangle, sf);
drawBrush.Dispose();
sf.Dispose();
}
Solution 2
To get less-fuzzy text, use the TextRenderer class instead:
private void Button1_Paint(object sender, PaintEventArgs e)
{
Button btn = (Button)sender;
// make sure Text is not also written on button
btn.Text = string.Empty;
// set flags to center text on button
TextFormatFlags flags = TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak; // center the text
// render the text onto the button
TextRenderer.DrawText(e.Graphics, "Hello", btn.Font, e.ClipRectangle, btn.ForeColor, flags);
}
And the Button1_EnabledChanged method as in Harsh's answer.
Solution 3
On the EnableChanged event of the button
private void button1_EnabledChanged(object sender, EventArgs e)
{
if (button1.Enabled == false)
{
button1.ForeColor = Color.DarkGray; //or pick the color you want when not enabled
}
else
{
button1.ForeColor = Color.White; //same here with the color
}
}
Author by
user2500179
Updated on July 09, 2022Comments
-
user2500179 almost 2 years
We have a Windows Forms project with quite a few FlatStyle buttons.
When we disable the buttons, the colors of the buttons are changed automatically Frown | :(
Is it possible to override this somehow, so we can control the colors ourselves?