动态创建ImageButton
我正在尝试动态声明一个ImageButton。
我声明它并为其分配ID和图像,如下所示:
ImageButton btn = new ImageButton(); btn.ImageUrl = "img/Delete.png"; btn.ID = oa1[i] + "_" + i; btn.OnClick = "someMethod";
但是当我尝试为按钮分配OnClick处理程序时,它会抛出以下exception:
System.Web.UI.WebControls.ImageButton.OnClick is inaccessible due to protection level
看看这个答案 ,它与动态控件和事件有关
正如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 }
Alternativeley
protected void Page_Init(object sender, EventArgs e) { var i = new ImageButton(); i.Click += (source, args) => { // do something }; this.myPanel.Controls.Add(i); }
您无法为这样的方法分配值,即使它是可访问的。 您需要订阅该活动:
btn.Click += ClickHandlingMethod;
一个例子:
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 // ... }