[英]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.