C# 如何为自定义控件绑定事件处理程序

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 =

我不熟悉asp.net中的自定义控件。我在为图像按钮附加click事件处理程序时遇到困难。我为服务器控制编写了以下代码

        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";
  }