zoukankan      html  css  js  c++  java
  • C# 事件 委托 传值

    1 定义事件
    public class UserMsgEvent : EventArgs
    {
    private string _myName;

    public string MyName
    {
    get { return _myName; }
    set { _myName = value; }
    }

    public UserMsgEvent(string name)
    {
    _myName = name;
    }
    }
    2 哪个方法需要传递事件发生的(一般继承至EventAgr类)参数,
    A:就在那个类里发布 且调用事件
    private event EventHandler<UserMsgEvent> userMsgEvent;
    protected void Button1_Click(object sender, EventArgs e)
    {
    string s = TextBox1.Text;
    UserMsgEvent msg = new UserMsgEvent(s);
    userMsgEvent(this, msg);
    }

    B:在调用之前应该把订阅者的方法传递进来初始化
    public void addEvent(EventHandler<UserMsgEvent> msgEvent)
    {
    if (userMsgEvent == null)
    {
    userMsgEvent = new EventHandler<UserMsgEvent>(msgEvent);

    }
    else
    {
    userMsgEvent += msgEvent;
    }
    }

    C:如过不把方法传递进来初始化那么必须把事件 以及事件调用 定义成static
    例如:
    public class DataListener
    {
    private static DataListener _datalistener;

    public static DataListener Datalistener
    {
    get {

    if (_datalistener == null)
    {
    _datalistener = new DataListener();
    }
    return DataListener._datalistener;

    }

    }

    //定义委托
    public delegate void DataListenHander();
    //定义事件
    public event DataListenHander DataListenEvent;
    //定义监听方法
    public void onDataListen()
    {
    if (DataListenEvent != null)
    {
    DataListenEvent();
    }
    }
    }

    或者例如这样:
    public delegate void MyDelegate(string s);
    public event MyDelegate Myevent;
    public static MyClass myEventClass = new MyClass();
    public void TestMyEvent(string s)
    {
    if (Myevent != null)
    {
    Myevent(s);
    }
    }

    3 事件订阅者 订阅
    MyClass.myEventClass.Myevent += new MyClass.MyDelegate(cl_Myevent);
    void cl_Myevent(string s)
    {
    textBox1.Text = s;
    }

  • 相关阅读:
    离开页面时提示用户
    返回顶部
    【转】 MySQL主从(Master-Slave)复制
    判断是否到达指定时间,可以精确到秒
    【转】tomcat优化-有改protocol 和 缓存 集群方案
    【转】Spring+Websocket实现消息的推送
    【转】SpringMVC整合websocket实现消息推送及触发
    【转】java即时消息推送
    大型网站对图片的下载,存放,及压缩管理
    简单的linux压力测试工具webbench
  • 原文地址:https://www.cnblogs.com/juefeiye/p/eventmy123.html
Copyright © 2011-2022 走看看