0

我有一组按钮。

当我尝试更改他们的背景颜色时,它不会显示在网络上。

为什么?

Button[] arr = new Button[2];
arr[0] = btn1;
arr[1] = btn2;

for (int i = 0 ; i < arr.length ; i++)
{
   arr[i].backColor = System.Drawing.Color.Red;
}

但这很好用:

btn1.backColor = System.Drawing.Color.Red;

从他的回答中添加:

不好意思,是我脑子里写的。

这是问题代码:

    static Button[] arr;
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
    arr = new Button[2];
    arr[0] = Button1;
    arr[1] = Button3;

    for (int i = 0; i < arr.Length; i++)
    {
        arr[i].BackColor = System.Drawing.Color.Blue;
    }
}
protected void Button2_Click(object sender, EventArgs e)
{
    for (int i = 0; i < arr.Length; i++)
    {
        arr[i].BackColor = System.Drawing.Color.Red;
    }
}

当我按下 Button1 时它可以工作,但是当我按下 Button2 时它不起作用..

为什么?

谢谢

4

4 回答 4

1

尝试这个。

首先决定何时要更改按钮的背景颜色。在任何按钮单击事件或页面加载时,只要您想调用以下函数即可。你的代码是真的。但只需在第二个按钮单击时调用设置按钮,或者始终必须先单击第一个按钮。

public void ChangeColor()
{
    Button[] arr = new Button[2];
    arr[0] = btn1;
    arr[1] = btn2;
    for (int i = 0; i < arr.Length; i++)
    {
        arr[i].BackColor = System.Drawing.Color.Red;         
    }
}

更新答案作为您的问题。

Button[] arr;
protected void btnColor_Click(object sender, EventArgs e)
{
    ChangeColorRed();
}
protected void btnColor2_Click(object sender, EventArgs e)
{
    ChangeColorGreen();
}
public void ChangeColorRed()
{
    SetButton();
    for (int i = 0; i < arr.Length; i++)
    {
        arr[i].BackColor = System.Drawing.Color.Red;
    }
}
public void SetButton()
{
    arr = new Button[2];
    arr[0] = btn1;
    arr[1] = btn2;
}
public void ChangeColorGreen()
{
    SetButton();
    for (int i = 0; i < arr.Length; i++)
    {
        arr[i].BackColor = System.Drawing.Color.Green;
    }
}

问候 AB Vyas

于 2013-10-16T07:17:50.087 回答
1

编辑:

在按下 Button1 之前按下 Button2 时,尚未创建按钮数组,因此无法设置颜色。实例化数组,例如, in Page_Load();


另外,我建议不要使用数组,除非你真的确定你需要它们。尝试这个。

var btns = new List<Button> { btn1, btn2 };

如果你想添加一个新按钮,只需调用

btns.Add(btn3);

例如,着色看起来像这样简单

foreach (var btn in btns)
   btn.BackColor = Color.Red;
于 2013-10-16T06:57:18.597 回答
0

可能是因为您显示的是 btn1 和 btn2?

好像您正在创建按钮的副本。

这个怎么样?

Button[] arr = new Button[2];
arr[0] = btn1;
arr[1] = btn2;

for (int i = 0 ; i < arr.length ; i++)
{
   arr[i].backColor = System.Drawing.Color.Red;
   arr[i].Show(); //add Show
}
于 2013-10-16T07:07:17.307 回答
0

不好意思,是我脑子里写的。

这是问题代码:

    static Button[] arr;
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
    arr = new Button[2];
    arr[0] = Button1;
    arr[1] = Button3;

    for (int i = 0; i < arr.Length; i++)
    {
        arr[i].BackColor = System.Drawing.Color.Blue;
    }
}
protected void Button2_Click(object sender, EventArgs e)
{
    for (int i = 0; i < arr.Length; i++)
    {
        arr[i].BackColor = System.Drawing.Color.Red;
    }
}

当我按下 Button1 时它可以工作,但是当我按下 Button2 时它不起作用..

为什么?

谢谢

于 2013-10-16T07:09:28.800 回答