我的窗体中有20个图标按钮。当执行clickevent时,我想改变按钮(背景色、前景色、图标色),其余的按钮应该恢复为默认颜色。
public void btn1()
{
foreach (Control c in this.Controls)
{
if (c is Button)
{
(c as Button).ForeColor = Color.White;
(c as Button).BackColor = Color.FromArgb(46, 51, 73);
}
}
}
2条答案
按热度按时间uhry853o1#
您可以让每个按钮都侦听相同的Click事件,并执行一些条件逻辑来实现这一点。
首先,使每个按钮都引用同一个Click事件。您可以通过在窗体设计器中单击按钮,然后在“属性”窗口中单击 lightning 图标(事件图标),将Click事件更改为所需的方法来完成此操作:
然后,让您的事件方法执行类似以下的动作:
这会取得
sender
的型别(在本例中为单击的按钮),并设置其BackColor
属性。然后,foreach
循环遍历窗体中的所有控件,检查列表中的当前项是否为按钮,是否不是单击的按钮,它将更改BackColor
属性。显然,您可以更改单击的按钮以及foreach
中其他按钮的其他属性。如果操作正确,其行为应该如下:
xsuvu9jc2#
这就是
RadioButton
的用处。只需将它的Appearance
设置为Button
,这样它看起来就像一个普通按钮,但实际上却可以用作单选按钮:单击该按钮将取消选中所有其他按钮。只有最后单击的按钮的Checked
属性为true
: