C# WinForm编程:一个界面上的一个Panel面板中有多个 button 按钮,请问怎样做,当点击某一个button 按钮时,该button 按钮的背景颜色和字体颜色发生改变,而其他按钮的背景颜色和字体颜色一样。当点击另一个按钮时,这个button 按钮的背景颜色和字体颜色发生改变,而第一次点击的按钮和其他按钮的背景颜色和字体颜色一样。重点实现:点击某一按钮,该按钮颜色改变,其他按钮颜色无变化。在点击另一个按钮,该按钮颜色改变,其他按钮颜色变成一个颜色。只是点击的按钮和未被点击的按钮的颜色不一样。winform编程界面c#

解决方案 »

  1.   

    private void button_Click(object sender, EventArgs e)
            {
                //遍历所有组件
                foreach (Control ctl in panel.Controls)
                {
                    //如果组件是按钮
                    if (ctl is Button)
                    {
                        if (ctl.Equals(sender))
                        {
                            //ctl是当前点击的那个按钮
                        }
                        else
                        {
                            //ctl是其它按钮
                        }
                    }
                }
            }
      

  2.   

    你把所有按钮的click事件响应程序绑定到这个程序上。
    剩下的就是对ctl进行各种属性设置了,比如你说的颜色。
    可以强制转换下 
    (Button)Ctl.xxx=xxx
      

  3.   

    foreach (var btn in panel.Controls.OfType<Button>())
    {
        if (btn == sender as Button) { btn.Font = new Font("黑体", 12); btn.ForeColor = Color.Red; }
        else { btn.Font = new Font("宋体", 12); btn.ForeColor = Color.Black; }
    }
      

  4.   

    嗯。button 按钮 是动态生成的。
      

  5.   

    弄个变量记住上一次点击的按钮就可以了啊btnClick(object sender,EventArgs e):
        if(prevBtn!=null) 
            preBtn.BackColor=.....'
        (sender as Button).BackColor=....;
        prevBtn=(Button)sender;