按钮 BackColor 没有改变

Button BackColor doesn't change

当按钮具有默认颜色时,我想更改它的颜色。我尝试使用下面的代码,但它不起作用。我该怎么做?

public void ClickedButton (object sender, EventArgs e)
{
    if ((sender as Button).BackColor == System.Drawing.SystemColors.Control) {
        (sender as Button).BackColor = Color.Turquoise;
    }
}

您需要添加调试行来验证按钮的当前颜色

public void ClickedButton (object sender, EventArgs e)
{
    // add debug line here 
    string message = (sender as Button).BackColor.ToString();
    Debug.WriteLine(message);

    if ((sender as Button).BackColor == System.Drawing.SystemColors.Control) {
        (sender as Button).BackColor = Color.Turquoise;
    }
}

这将有助于您对代码进行故障排除。您当前的代码也没有任何问题。下面是结果。

这是 Output Window 中的结果:

首先尝试将 sender 转换为 Button

public void ClickedButton (object sender, EventArgs e)
{
    var btn = sender as Button;
    if ((btn != null) && btn.BackColor == System.Drawing.SystemColors.Control)) {
        btn.BackColor = Color.Turquoise;
    }
}

如果这是一个 Windows 表单控件,那应该可以。

如果这是一个 Web 窗体控件,它可能不是(除非您将其作为回发的一部分调用)。