更改数组中的属性

时间:2013-10-16 06:53:49

标签: c# arrays button

我有一系列按钮。

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

为什么?

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 个答案:

答案 0 :(得分:1)

修改

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

中为实例实例化数组

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

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

如果您想添加新按钮,请致电

btns.Add(btn3);
然后,

着色看起来像这样简单

foreach (var btn in btns)
   btn.BackColor = Color.Red;

答案 1 :(得分: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

答案 2 :(得分: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
}

答案 3 :(得分: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时它不起作用..

为什么?

由于