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

  • 相关阅读:
    苑举正相关视频
    pdf怎么转换成word
    Qt架构图及模块分析介绍
    读残雪的《趋光运动 : 回溯童年的精神图景》笔记
    Qt之美(一):D指针/私有实现
    十大美国大学网络公开课
    网络公开课和MOOC资源
    网络课程网站
    Qt源码学习之路(2) QCoreApplication(1)
    xshell如何导入.xsh 文件
  • 原文地址:https://www.cnblogs.com/juefeiye/p/eventmy123.html
Copyright © 2020-2023  润新知