UserControl的Eventhandler与按钮onClick事件

tee*_*bot 2 c# asp.net user-controls event-handling

我创建了一个用户控件,其中包含一个按钮和一些其他控件.

在html标记中声明我的用户控件时,我想做某种事情:

<asp:CustomControl onclick="CustomControl_Click" ID="cc1" runat="server"> 
Run Code Online (Sandbox Code Playgroud)

其中CustomControl_Click显然是我在单击控件按钮时要调用的操作.

到目前为止,在我的控制下,我有:

public event EventHandler Click;

    protected void Button1_Click(object sender, EventArgs e)
    {
        Click.Invoke(sender, e);
    }
Run Code Online (Sandbox Code Playgroud)

但是如何转发父页面的Eventhandler以将其分配给我的控件中的Click Eventhandler?

任何帮助真的很感激!

PS:也许有一种方法可以使用反射从托管页面获取方法

The*_*iot 5

我正在使用自定义按钮(实际上是嵌入了LinkBut​​ton的 html div ).这是代码:

    public delegate void ClickEventHandler(object sender, EventArgs e);
    public event ClickEventHandler Click =  delegate { };

    public string Text
    {
        get { return cmdLink.Text; }
        set { cmdLink.Text = value; }
    }

    public bool CausesValidation
    {
        get { return cmdLink.CausesValidation; }
        set { cmdLink.CausesValidation = value; }
    }

    public string OnClientClick
    {
        get { return cmdLink.OnClientClick; }
        set { cmdLink.OnClientClick = value; }
    }

    public string CssClass
    {
        get { return cmdLink.CssClass; }
        set { cmdLink.CssClass = value; }
    }

    protected void cmdLink_Click(object sender, EventArgs e)
    {
        Click(this, e);
    }
Run Code Online (Sandbox Code Playgroud)

这是aspx页面中的用法:

<Button_Control:ButtonControl ID="btnSave" runat="server" Text="Save" 
          OnClick="btnSaveClick" />
Run Code Online (Sandbox Code Playgroud)

这是在aspx页面的代码隐藏页面:

    protected void btnSaveClick(object sender, EventArgs e)
    {
        //do stuff here
    }
Run Code Online (Sandbox Code Playgroud)

  • 但仍然如何将"OnClick ="btnSaveClick"映射到ClickEventHandler Click? (2认同)