C#/apsx.net-动态创建的按钮不';行不通

C#/apsx.net-动态创建的按钮不';行不通,c#,.net,button,buttonclick,preinit,C#,.net,Button,Buttonclick,Preinit,这是我的问题:我在页面中动态创建了一些按钮(在page_PreInit方法中),所有按钮都链接到同一个事件处理程序。但是当我点击这些按钮时,它们不会触发事件。。。有人能帮我吗 以下是我的一些代码: 按钮创建(在页面上的foreach循环上_PreInit方法): OnClick方法: private void Download_Click(object sender, EventArgs e) { //doing some stuff } 动态控件必须在页面预初始化或初始化期间添加,而

这是我的问题:我在页面中动态创建了一些按钮(在page_PreInit方法中),所有按钮都链接到同一个事件处理程序。但是当我点击这些按钮时,它们不会触发事件。。。有人能帮我吗

以下是我的一些代码:

按钮创建(在页面上的foreach循环上_PreInit方法):

OnClick方法:

private void Download_Click(object sender, EventArgs e)
{
    //doing some stuff
}

动态控件必须在页面预初始化或初始化期间添加,而不是在加载时添加。这是因为页面生命周期和视图状态加载。。。因此,首先尝试一下,看看这是否解决了问题

此外,我相信我读到最好按以下方式排列代码:

Button b = new Button();
field.Controls.Add(b);

b.Text = "Download";
b.ID = tmp_out[type] as String;
b.Click += new EventHandler(Download_Click);

首先将控件添加到内部集合,然后更改其属性。

您的事件处理程序语句是

b.Click += new EventHandler(Download_Click);
但你的方法是

private void Download_Command(object sender, CommandEventArgs e)

您确定触发的方法正确吗?

不应该是这样的吗

...
b.Click += new EventHandler(Download_Command);
...

private void Download_Command(object sender, EventArgs e)
{
    //doing some stuff
}

好的,我解决了我的问题

按钮的ID包含一些“\”。我刚刚删除了那些“\”,效果很好


谢谢大家的回复

b.单击+=新事件处理程序(下载\u单击);但是你的方法签名无效下载_命令(object sender,CommandEventArgs e)抱歉,粘贴错误的方法,消息编辑OK谢谢,我会尝试,我会让你知道这是否解决了我的问题。所以我尝试在PreInit方法上添加我的代码,但我有一些问题。。。我正在创建一个包含多个按钮的表,但由于我将代码放在PreInit方法中,因此表被创建了两次。现在我的按钮做了一些事情,它们引发了一个执行选项,说ID不是唯一的(但是当使用firebug检查时,所有ID都是不同的:s)。我建议通过将添加到页面来创建一个静态表,但只是动态地构建行。这将有助于解决这个问题。修复了双表和异常问题(我刚刚出价了PreInit方法的两倍),但我的按钮仍然不会触发事件…我仍然无法判断我的按钮是否没有触发事件。。。你还有其他建议吗?我真的被困在这里了。。。
...
b.Click += new EventHandler(Download_Command);
...

private void Download_Command(object sender, EventArgs e)
{
    //doing some stuff
}