2015-09-15 139 views
0

我想要改变我的按钮的颜色,当它有一个默认的颜色。我尝试使用下面的代码,但它不起作用。我怎样才能做到这一点?按钮BackColor不会改变

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

您是否设置了控件样式? –

+1

为什么不只是将'sender'强制转换为局部变量而不是执行两个'as'强制转换? – juharr

+2

定义“不起作用”。这是wpf吗? AFAIK'Button'没有'BackColor'属性,也许你使用了错误的命名空间 – thumbmunkeys

回答

0

尝试铸造发件人按钮第一:

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窗体控件,它可能不会(除非您将它作为回发的一部分调用)。

1

您需要添加调试行验证按钮

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; 
    } 
} 

,将与您的代码有助于排除故障的当前颜色。你的当前代码也没有问题。结果如下。

enter image description here

下面是结果在Output Window

enter image description here