繁体   English   中英

切换按钮winform的外观

[英]Toggling the appearance of a button winform

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

我该怎么办? 更改外观并不是真正的问题,但知道存在先前的选择并还原就可以了。

谢谢。

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

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...
}

您可以不使用变量来存储当前选择的按钮吗

伪代码

按钮b = selectedButton

在点击事件中

如果b!=发送者

恢复b

b =新选择的按钮

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

 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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM