繁体   English   中英

将事件处理程序传递给UserControl以分配给动态LinkBut​​ton

[英]pass event handler to UserControl for assignment to dynamic LinkButton

我在UserControl中有一个公共函数,该函数接受EventHandler参数并将其分配给在运行时创建的一堆LinkBut​​ton。 在EventHandler中传递的函数位于带有UserControl的窗体上。 没有达到回调函数中定义的断点,所以我认为我做错了。

Default.aspx的

<uc1:tcControl runat="server" ID="tc1" />

Default.aspx.cs

tcControl1.ShowTags(new EventHandler(ClickHandler));

void ClickHandler(object sender, EventArgs e)

tcControl.ascx.cs

public void ShowTags(EventHandler handlerCallback)

LinkButton lb = new LinkButton();
lb.ID = t.Name.Replace(" ", "_");
lb.Text = t.Name.Replace(" ", "&nbsp;");
lb.Click += handlerCallback;

我认为您应该在用户控件中公开父页面可以订阅的公共事件。

来自http://www.marten-online.com/csharp/simple-custom-event-handling.html

  public delegate void LinkButtonClickHandler (object sender,  EventArgs data);

  // The event
  public event LinkButtonClickHandler LinkButtonClicked;

  // The method which fires the Event
  protected void OnLinkButtonClick (object sender,  EventArgs data)
  {
      // Check if there are any Subscribers
      if (LinkButtonClicked!= null)
      {
          // Call the Event
          LinkButtonClicked(this, data);
      }
  }

现在,在您的父页面上,您可以在Page_Load事件中订阅此事件:

public void Page_Load()
{
    userControl.LinkButtonClicked += HandleUserControlLinkButtonClicked;
}

private void HandleUserControlLinkButtonClicked(object sender, EventArgs data)
{
    // Handle the click as you wish
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM