页面加载时代码生成按钮的大问题VERSUS在设计视图中手动添加按钮。代码生成按钮
你不能手动添加140个按钮,所以我更喜欢代码。 所有按钮将在按钮点击(它们将改变颜色)时的行为类似于。我无法明确写出140个点击事件方法,那么我怎样才能让成为一个可以适用于所有的普通事件呢?
我想这样做的:
protected void btn_Click(object sender, EventArgs e)
{
Button btn1 = Panel2.FindControl("btn") as Button;
btn1.BackColor = Color.Red;
}
因为所有的按钮叫做BTN。
这是我如何添加按钮:
for (int a = 1; a <= 10; a++)
{
for (char b = 'A'; b <= 'N'; b++)
{
btn = new Button();
btn.Text = "";
btn.Height = 20; btn.Width = 20;
btn.ToolTip = a + " " + b;
Panel2.Controls.Add(btn);
}
Panel2.Controls.Add(new LiteralControl("<br/>")); // this inserts a paragraph
}
我不知道是否btn_Click(object sender, EventArgs e)
作品,因为在我点击一个按钮全部消失。 我该如何解决这个问题?
最后,我需要计数有多少个按钮是红色的。我的下面的想法是否实用?我们知道如何找到名为“btn”的按钮控件,,但是如何找到“具有某个属性的按钮,例如找到带有tooltip = 1A的名为btn的按钮。我会浏览所有工具提示(1A ,. ... 10N),并检查每个按钮(考虑到他们有独特的工具提示),并检查每次的颜色,对于每个红色,我计算一个按钮。现在我可以通过提示区分它们:1A,1B,... 10N,正如我所说多谢
编辑 >>>>>>>我想本的建议,现在的问题是。当我点击其中的任何按钮时,所有的按钮消失。感谢yoru耐心。
public partial class Seatalloc2 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PopulateControls();
}
}
protected void PopulateControls()
{
Panel1.Visible = true;
Button btn;
Panel2.Visible = true;
DropDownList nrbileteddl = Panel1.FindControl("nrBileteddl") as DropDownList;
nrbileteddl.Visible = true;
for (int i = 1; i <= 5; i++)
{
nrbileteddl.Items.Add(i + "");
}
for (int a = 1; a <= 10; a++)
{
for (char b = 'A'; b <= 'N'; b++)
{
btn = new Button();
btn.Text = "";
btn.Height = 20;
btn.Width = 20;
btn.ToolTip = a + " " + b;
btn.BackColor = Color.Green;
btn.Click += new EventHandler(btn_Click);
Panel2.Controls.Add(btn);
}
Panel2.Controls.Add(new LiteralControl("<br/>"));
}
}
protected void btn_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
btn.BackColor = Color.Red;
}
}
谢谢本,我想你的意见,并会重新编辑我的问题。问题是,我点击一个按钮后,所有消失。为什么会这样呢? –