gpt4 book ai didi

c# - 在另一个用户控件中使用一个用户控件的自定义事件?

转载 作者:太空狗 更新时间:2023-10-30 00:53:29 26 4
gpt4 key购买 nike

在 UserControl1 中有一个我想连接到 UserControl2 的自定义事件。

在 UserControl1 中,我已将自定义事件声明为:

 public event MYDelegate SendMessage;

虽然我的委托(delegate)定义在其他类库中为:

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

发件人用户控件.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

关于c# - 在另一个用户控件中使用一个用户控件的自定义事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16290822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com