1

我这里有 3 个按钮。

当我单击按钮 1 时,它将禁用按钮 1,然后启用第二个按钮,然后与到达最后一个按钮的过程相同。但我认为我的代码有问题。当我单击第一个按钮时它不会禁用

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. 订阅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 回答