所以..我正在我的页面上动态创建LinkButtons:
LinkButton lb = new LinkButton();
lb.Click += new EventHandler(lb_Click);
当单击其中一个LinkButton时,我需要知道哪个链接被点击,然后创建另一个LinkButton并在其上附加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事件。
答案 0 :(得分: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")
{
...
}
}
答案 1 :(得分: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
}
希望这有助于未来的访问者:)