我正在尝试动态声明一个ImageButton。
我声明它并为它分配一个ID和Image,如下所示:
ImageButton btn = new ImageButton();
btn.ImageUrl = "img/Delete.png";
btn.ID = oa1[i] + "_" + i;
btn.OnClick = "someMethod";但是,当我尝试为按钮分配一个OnClick处理程序时,它抛出了以下异常:
System.Web.UI.WebControls.ImageButton.OnClick is inaccessible due to protection level发布于 2012-06-16 16:32:41
看看这个answer,它与动态控件和事件相关
正如Jon评论的那样,你不能向事件添加字符串,在这种情况下,你需要为事件添加一个处理程序:
protected void Page_Init(object sender, EventArgs e)
{
var i = new ImageButton();
i.Click += new ImageClickEventHandler(i_Click);
this.myPanel.Controls.Add(i);
}
void i_Click(object sender, ImageClickEventArgs e)
{
// do something
}另一种方式
protected void Page_Init(object sender, EventArgs e)
{
var i = new ImageButton();
i.Click += (source, args) =>
{
// do something
};
this.myPanel.Controls.Add(i);
}发布于 2012-06-16 16:22:13
你不能给这样的方法赋值,即使它是可访问的。您需要订阅活动:
btn.Click += ClickHandlingMethod;发布于 2012-06-16 16:30:45
举个例子:
private void CreateAButton()
{
var button = new ImageButton();
button.ImageUrl = "yourimage.png";
button.ID = "Button1";
button.Click += ButtonClick;
Page.Form.Controls.Add(button);
}
private void ButtonClick(object sender, ImageClickEventArgs e)
{
// Do stuff here
// ...
}https://stackoverflow.com/questions/11061872
复制相似问题