1

我在页面上有很多按钮。每个按钮都有白色作为背景色,当我点击按钮时,它的颜色变为黄色。

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)
{
    if (Button1.BackColor == Color.Yellow)
    { Button1.BackColor = Color.Red; }
    if (Button2.BackColor == Color.Yellow)
    { Button2.BackColor = Color.Red; }          
}

但我需要一种更快的方法,所以我不必专门为每个按钮编写

4

4 回答 4

3

// 占位符的名称。在这种情况下,所有控件都在,<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 查询可以写成

 foreach (Button item in form1.Controls.OfType<Button>().Where(item => (item).BackColor == Color.Red))
        {
            (item).BackColor = Color.Yellow;
        }
于 2012-12-10T17:51:43.310 回答
2

抱歉编辑。将所有按钮放在 PlaceHolder 中。您可以在 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");
}
于 2012-12-10T17:49:28.317 回答
0
    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;
            }
        }
    }     
于 2012-12-10T17:52:24.100 回答
0

这是一个 Javascript 答案,以防您想避免 PostBack:

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

祝你好运!

于 2012-12-10T23:31:45.047 回答