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

  • 相关阅读:
    CRM 跳转到数据修改页面、动态生成model,form、增加新增页面——第21天
    CRM 日期字段过滤功能——第21天
    CRM多条件查询——第20天
    CRM排序——第19天
    CRM_分页显示——第18天
    CRM分页 ——第17天
    CRM多条件筛选和分页——第16天
    python global、nonlocal、闭包、作用域——第10天
    uniAPP view 和 swiper
    uniAPP tabBar 设置
  • 原文地址:https://www.cnblogs.com/juefeiye/p/eventmy123.html
Copyright © 2011-2022 走看看