0

我在面板中有一个按钮列表(动态生成)。在我的应用程序中,当单击其中一个按钮时,它的外观应该会改变。如果用户更改他们的选择并单击列表中的另一个按钮,则新按钮会更改外观,而旧按钮将返回其默认外观。
单击完全不相关的按钮可确认选择。

我该怎么做?改变外观并不是真正的问题,但知道有一个先前的选择和恢复是。

谢谢。

4

3 回答 3

1

为面板中的所有按钮创建一个按钮单击事件处理程序并在那里处理所有更新:

private void MyToggleButton_Click(object sender, EventArgs e) {
    // Set all Buttons in the Panel to their 'default' appearance.
    var panelButtons = panel.Controls.OfType<Button>();
    foreach (Button button in panelButtons) {
        button.BackColor = Color.Green;
        // Other changes...
    }

    // Now set the appearance of the Button that was clicked.
    var clickedButton = (Button)sender;
    clickedButton.BackColor = Color.Red;
    // Other changes...
}
于 2012-09-14T23:07:12.387 回答
0

有一个存储当前按钮的变量,确保在分配新单击的按钮之前更改先前分配的按钮的颜色

 private Button currentBtn = null;

为按钮创建一个公共事件处理程序

 protected void b_Click(object sender, EventArgs e)
    {
        Button snder  = sender as Button;

        //for the first time just assign this button
        if (currentBtn == null)
        {
            currentBtn = snder;
        }
        else //for the second time and beyond
        {
            //change the previous button to previous colour. I assumed red
            currentBtn.BackColor = System.Drawing.Color.Red;

            //assign the newly clicked button as current
            currentBtn = snder;
        }

        //change the newly clicked button colour to "Active" e.g green
        currentBtn.BackColor = System.Drawing.Color.Green;
    }
于 2012-09-14T23:21:39.513 回答
0

你能不使用变量来存储当前选择的按钮吗

伪代码

按钮 b = selectedButton

在点击事件中

如果 b != 发件人

恢复 b

b = 新选择的按钮

于 2012-09-14T23:01:27.840 回答