在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
标签:c,net,asp-net,vb-net 来源: https://codeday.me/bug/20190529/1178513.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。