简体   繁体   English

如何使用额外的按钮更改多个按钮的背景色

[英]How to change back color on multiple buttons with extra button

I have a lot of buttons on page. 我在页面上有很多按钮。 Every button has white color as background color, and when I click on button it changes color to yellow. 每个按钮都有白色作为背景颜色,当我单击按钮时,它将颜色更改为黄色。

protected void Button1_Click(object sender, EventArgs e)
{
    if(((Button)sender).BackColor != Color.Red)
    {((Button)sender).BackColor = Color.Yellow;}
}

With one extra button I want to change the backcolors that are yellow to red. 通过一个额外的按钮,我想将黄色变为红色。 How to do this? 这个怎么做? I know it can be done like this: 我知道可以这样做:

protected void Button7_Click(object sender, EventArgs e)
{
    if (Button1.BackColor == Color.Yellow)
    { Button1.BackColor = Color.Red; }
    if (Button2.BackColor == Color.Yellow)
    { Button2.BackColor = Color.Red; }          
}

but I need a quicker way, so I don't have to write for every button specially 但是我需要一种更快的方法,所以我不必专门为每个按钮编写

// name of the placeholder . //占位符的名称。 In this case all controls are in <form id="form1" runat="server" /> so i have put form1.Controls . 在这种情况下,所有控件都在<form id="form1" runat="server" />因此我放置了form1.Controls

foreach (var item in form1.Controls)
        {
            if (item is Button)
            {
                if (((Button)item).BackColor == Color.Red)
                {
                    ((Button)item).BackColor = Color.Yellow;
                }
            }
        }

LINQ QUERY CAN BE WRITTEN AS LINQ查询可以写为

 foreach (Button item in form1.Controls.OfType<Button>().Where(item => (item).BackColor == Color.Red))
        {
            (item).BackColor = Color.Yellow;
        }

Sorry for the edit. 抱歉,编辑。 Place all your buttons in a PlaceHolder. 将所有按钮放在PlaceHolder中。 And you can call this code at PageLoad. 您可以在PageLoad处调用此代码。

    foreach (Control item in PlaceHolder1.Controls)
    {
        if(item.GetType()== typeof(Button))
        {
            Button btn = (Button)item;
            btn.Click += new EventHandler(FunctionName);
        }

    }


protected void FunctionName(object sender, EventArgs e)
{
    //You code here to change colors
    Response.Write("Hello World");
}
    protected void Button1_Click(object sender, EventArgs e)
    {
        if(((Button)sender).BackColor != Color.Red)
        {((Button)sender).BackColor = Color.Yellow;}
    }

    protected void button7_Click(object sender, EventArgs e)
    {
        foreach (var control in this.Controls)
        {
            if (control is Button && (Button)sender != control && ((Button)control).BackColor == Color.Yellow)
            {
                ((Button)control).BackColor = Color.Red;
            }
        }
    }     

Here is a Javascript answer, in case you want to avoid the PostBack: 如果您想避免使用PostBack,这是一个Java脚本答案:

<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">
        function changeColor() {

            var items = document.getElementById("buttons").getElementsByTagName("input");

            for (var i = 0; i < items.length; i++) {
                if (items[i].style.background == "red")
                    items[i].style.background = "yellow";
                else
                    items[i].style.background = "red";
            }
            return false;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div id="buttons">
        <asp:Button ID="Button1" runat="server" Text="Button" BackColor="Red" />
        <asp:Button ID="Button2" runat="server" Text="Button" BackColor="Red" />
        <asp:Button ID="Button3" runat="server" Text="Button" BackColor="Red" />
        <asp:Button ID="Button4" runat="server" Text="Button" BackColor="Red" />
        <asp:Button ID="Button5" runat="server" Text="Button" BackColor="Red" />
        <asp:Button ID="Button6" runat="server" Text="Click Me" BackColor="Red" OnClientClick="return changeColor()" />
    </div>
    </form>
</body>
</html>

Good luck! 祝好运!

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

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