0

ボタンの配列があります。

バックカラーを変更しようとすると、Web に表示されません。

なんで?

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

編集:

Button1 を押す前に Button2 を押すと、ボタンの配列がまだ作成されていないため、色を設定できません。たとえば、配列をインスタンス化し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 に答える
1

これを試して。

まず、ボタンの背景色をいつ変更するかを決定します。任意のボタン クリック イベントまたはページの読み込みで、実行したい場所で関数の下を呼び出すだけです。あなたのコードは真実です。ただし、2番目のボタンクリックでボタンを設定するか、常に最初のボタンをクリックする必要があります。

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 に答える
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 に答える