C# 如何为自定义控件绑定事件处理程序
我不熟悉asp.net中的自定义控件。我在为图像按钮附加click事件处理程序时遇到困难。我为服务器控制编写了以下代码C# 如何为自定义控件绑定事件处理程序,c#,asp.net,custom-controls,C#,Asp.net,Custom Controls,我不熟悉asp.net中的自定义控件。我在为图像按钮附加click事件处理程序时遇到困难。我为服务器控制编写了以下代码 ImageButton _imgbtn; TextBox txtOutput; Label _lblname; public ImageButton searchBtn { get { return _imgbtn; } set { _imgbtn =
ImageButton _imgbtn;
TextBox txtOutput;
Label _lblname;
public ImageButton searchBtn
{
get { return _imgbtn; }
set { _imgbtn = value; }
}
public Label lblName
{
get { return _lblname; }
set { _lblname = value; }
}
protected override void OnInit(EventArgs e)
{
txtOutput = new TextBox();
txtOutput.Width = 180;
txtOutput.ID = "ResultOutput";
txtOutput.Enabled = false;
Controls.Add(txtOutput);
searchBtn = new ImageButton();
Controls.Add(searchBtn);
lblName = new Label();
lblName.Text = "";
Controls.Add(lblName);
}
protected override void RenderContents(HtmlTextWriter output)
{
//base.Render(output);
txtOutput.RenderControl(output);
searchBtn.RenderControl(output);
lblName.RenderControl(output);
}
我将这个自定义控件添加到带有register标记的.aspx页面,如下所示
<%@ Register TagPrefix="mycontrol" Namespace="MyControl" Assembly="MyControl" %>
运行此应用程序后,我遇到以下错误
“GenerateClickEvent”未定义
我犯错误的地方。我试图声明一个事件,比如public event EventHandler GenerateClickEvent代码>,但我无法继续。你能告诉我如何做到这一点吗
我还尝试了.aspx页面中的javascript函数
function GenerateClickEvent() {
alert('clicked');
}
alert('clicked')代码>未触发。您可能需要这样的东西,您所做的是为客户端单击
mycustctrol.searchBtn.OnClientClick = "GenerateClickEvent()"
像这样的活动点击
mycustctrol.searchBtn.Click += new ImageClickEventHandler(GenerateClickEvent_Click);
protected void GenerateClickEvent_Click(object sender, ImageClickEventArgs e)
{
mycustctrol.lblName.Text = "clicked";
}
GenerateClickEvent是否为此定义了jacascript是的。查看我编辑的问题,了解javascript是否正常工作。但对于事件,它给出了以下错误<编译时,代码>无法将类型“System.EventHandler”隐式转换为“System.Web.UI.ImageClickEventHandler”
在if(!Page.IsPostBack)
条件中绑定事件是否正确?如果我在页面加载中的if条件之外写入绑定事件和customcontrol对象,它工作正常。哦,不要按你的方式使用它。你没有在你的情况下发回邮件。我不明白。在if
条件下还是在if
条件外写入更好?
mycustctrol.searchBtn.Click += new ImageClickEventHandler(GenerateClickEvent_Click);
protected void GenerateClickEvent_Click(object sender, ImageClickEventArgs e)
{
mycustctrol.lblName.Text = "clicked";
}