微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 非法侵入事件

我有一个控件,它有一个事件处理程序.我通常在许多页面上使用此控件来管理引发的事件.但现在,只需要将此控件放入另一个控件并随后放在页面上.有没有办法从原始控件中侵入事件?

正常情况

>页>

public event EventHandler MyEvent;

protected virtual void OnMyEvent(EventArgs e)
{
   if(this.MyEvent != null) this.MyEvent(this,e);
}

Page.aspx

<ASP:Control1 id="ctrl1" runat="server" OnMyEvent="ctrl1_MyEvent" />

Page.aspx.cs

protected void ctrl1_MyEvent(object sender,EventArgs e)
    {
        ....
    }

特殊情况

>>

最佳答案
我建议创建自己的类,我称之为’SomeNameEventManager’.

在您的父控件中,您可以通过此类直接订阅/取消订阅.
在您的子控件中,您可以通过调用方法(例如OnChanged)来引发事件.

示例代码

public class SomeNameEventManager
{
ChangedEventHandler(object sender,EventArgs e);
public static event ChangedEventHandler Changed;
public static void OnChanged(EventArgs e) { Changed(this,e); }
}

也许你想出一个更有活力的方法来做到这一点.

在任何情况下我猜,要走的路是在中间有一个班级.

转载注明原文:c# – 非法侵入事件 - 代码日志

解决方法

我建议创建自己的类,我称之为’SomeNameEventManager’.

在您的父控件中,您可以通过调用方法(例如OnChanged)来引发事件.

示例代码

public class SomeNameEventManager
{
ChangedEventHandler(object sender,e); }
}

也许你想出一个更有活力的方法来做到这一点.

在任何情况下我猜,要走的路是在中间有一个班级.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐