1

所以.. 我在我的页面上动态创建 LinkBut​​tons,如下所示:

LinkButton lb = new LinkButton();
lb.Click += new EventHandler(lb_Click);

单击其中一个链接按钮时,我需要知道单击了哪个链接,然后创建另一个链接按钮并在其上附加一个 onclick 事件。(我怎样才能做到这一点?如果我理解正确,单击事件不能附加在(这种情况下)lb_Click 函数中,那么我还有什么办法可以做到这一点?

编辑:

为了使这个问题更容易理解,这是我尝试解决的方法,但它不起作用:

LinkButton lb = new LinkButton();
lb.click += new EventHandler(lb_Click);

void lb_Click(object sender, EventArgs e)
{
    LinkButton lb2 = new LinkButton();
    lb2.click += new EventHandler(lb2_Click);
}

void lb2_Click(object sender, EventArgs e)
{
    //do something
}

单击 lb2 不会触发 lb2_Click 事件。

4

2 回答 2

0

您可以尝试使用此代码 - 基于sender argument

LinkButton lb = new LinkButton();
lb.Id= "Test1";
lb.Click += new EventHandler(lb_Click);

LinkButton lb2 = new LinkButton();
lb2.Id= "Test2";
lb2.Click += new EventHandler(lb_Click);

void LinkButton_Click(Object sender, EventArgs e) 
{
   var yourControl = (LinkButton)sender;
   var id = yourControl.Id;
   if(id == "Test1")
   {
      ...
   }
   else if(id == "Test2")
   {
      ...
   }

}
于 2012-10-24T08:59:04.553 回答
0

是的,是的,是的:我参加晚会非常非常晚。
供任何来这篇文章的人将来参考:

您的方法被标记为private(省略访问修饰符,默认为private),这意味着它们的可访问性不足以调用它们。

相反,使用protected修饰符来确保它们被正确调用。

像这样:

LinkButton lb = new LinkButton();
lb.click += new EventHandler(lb_Click);

protected void lb_Click(object sender, EventArgs e)
{
    LinkButton lb2 = new LinkButton();
    lb2.click += new EventHandler(lb2_Click);
}

protected void lb2_Click(object sender, EventArgs e)
{
    //do something
}

希望这可以帮助一些未来的访客:)

于 2016-06-20T20:50:48.213 回答