1

ここに 3 つのボタンがあります。

ボタン1をクリックすると、ボタン1が無効になり、2番目のボタンが有効になり、最後のボタンに到達したときと同じプロセスが実行されます。しかし、私のコードに何か問題があると思います。最初のボタンをクリックしても無効になりません

ロード時に、button1 が有効になり、button2 と 3 が無効になります。

private void groupBox1_Enter(object sender, EventArgs e)
{
    Button btn = sender as Button;

    if (btn == button1)
    {
        button1.Enabled = false;
        button2.Enabled = true;
        button3.Visible = false;
        button3.Enabled = false;
        MessageBox.Show("button 1 disabled");
    }
    else if (btn == button2)
    {
        button1.Enabled = false;
        button2.Enabled = false;
        button3.Visible = true;
        button3.Visible = true;
        MessageBox.Show("button 2 disabled");
    }
    else if (btn == button3)
    {
        button1.Enabled = false;
        button2.Enabled = false;
        button3.Visible = false;
        button3.Visible = false;
        MessageBox.Show("button 3 disabled");
    }
}
4

4 に答える 4

4

適切なイベントにサブスクライブしていますか? groupBox1_Enter と表示されます。

Button[] buttons = null;  // Initialize somewhere with all the buttons.

void OnButtonClick(object sender, EventArgs e)
{
    for (int index = 0; index < buttons.Length; index++)
    {
        if (buttons[index] == sender)
        {
            buttons[index].Enabled = buttons[index].Visible = false;
        }
        else
        {
            buttons[index].Enabled = buttons[index].Visible = true;
        }
    }
}

申し訳ありませんが、あなたの投稿を読み逃してしまいました。以下、順番に

Button[] buttons = null;
        void OnButtonClick(object sender, EventArgs e)
        {
            int buttonIndex = Array.IndexOf(buttons, sender);
            for (int index = 0; index < buttons.Length; index++)
            {
                if (index == buttonIndex + 1)
                {
                    buttons[index].Enabled = buttons[index].Visible = true;
                }
                else
                {
                    buttons[index].Enabled = buttons[index].Visible = false;
                }
            }
        }
于 2012-10-31T02:30:28.673 に答える
0

各ボタンのプロパティで、各ボタンの初期値を確認してください。

ボタンを変更する前に、ボタンのプロパティを設定する初期化子を用意することをお勧めします。

于 2012-10-31T02:40:39.863 に答える
0

Enterのイベント内にコードを配置しないでください。GroupBoxこのイベントには groupoBow が含まれsenderます。ボタンの1つのButtonPressedイベントをサブスクライブし、最終的に同じ生成されたメソッドを使用して、ButtonPressed他の2つのボタンのイベントをサブスクライブします(記述したif-elseステートメントを使用する場合)

于 2012-11-23T09:34:52.863 に答える
-1

多分あなたはこの方法でそれを試してみるべきです:

private void groupBox1_Enter(object sender, EventArgs e)
{
    Button btn = sender as Button;

    if (btn == button1)
    {
        button1.Enabled = false;
        button2.Enabled = true;
        button3.Enabled = false;
        MessageBox.Show("button 1 is disabled");
    }
    else if (btn == button2)
    {
        button1.Enabled = false;
        button2.Enabled = false;
        button3.Enabled = true;
        MessageBox.Show("button 1 & button 2 are disabled");
    }
    else if (btn == button3)
    {
        button1.Enabled = false;
        button2.Enabled = false;
        button3.Enabled = false;
        MessageBox.Show("button 3 disabled");
    }
}

これはあなたがそれが機能しなければならないとあなたが考える方法ですか、それとも私はこれを間違っていますか?

于 2015-01-05T15:40:42.930 に答える