簡體   English   中英

在另一個用戶控件中使用一個用戶控件的自定義事件?

[英]consuming custom event of one user control in another user control?

在UserControl1中,有一個自定義事件,我想在UserControl2中進行連接。

在UserControl1中,我將自定義事件聲明為:

 public event MYDelegate SendMessage;

而我的委托人定義在其他類庫中為:

public delegate string MYDelegate(string message);

我在我的代碼中觸發了SendMessage,如下所示:

  SendMessage(txt.Text);

請指導我如何在UserControl2中連接SendMessage()事件。 我的想法是執行以下示例中的操作,但是不確定如何在UserControl2中獲取/訪問UserControl1對象。

請幫我。

UserControl1.SendMessge+=ListnerMetod();

你快到了 您只需要將SendMessage附加到UserControl2的ListnerMetod。

正如Mark Hall所說,在父頁面未知的情況下,將事件從一個控件觸發到另一個控件不是一個好習慣。

這是通過父頁面觸發事件的示例代碼。

Default.aspx(父頁面)

<%@ Register Src="SenderUserControl.ascx" TagName="SenderUserControl" 
  TagPrefix="uc1" %>
<%@ Register Src="ReceiverUserControl.ascx" TagName="ReceiverUserControl" 
  TagPrefix="uc2" %>
<uc1:SenderUserControl ID="SenderUserControl1" runat="server" />
<uc2:ReceiverUserControl ID="ReceiverUserControl1" runat="server" />

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SenderUserControl1.SendMessage += m => ReceiverUserControl1.ListnerMethod(m);
    }
}

SenderUserControl.ascx

public delegate void MessageHandler(string message);

public partial class SenderUserControl : System.Web.UI.UserControl
{
    public event MessageHandler SendMessage;

    protected void Button1_Click(object sender, EventArgs e)
    {
        SendMessage("test");
    }
}

ReceiverUserControl.ascx

public partial class ReceiverUserControl : System.Web.UI.UserControl
{
    public void ListnerMethod(string message)
    {

    }
}

歸功於Mark Hall

如果兩個UserControl都由同一父控件承載,則將父控件中的處理程序附加到要訂閱的UserControls事件,然后在該處理程序的第二個UserControl中調用一個方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM