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

  • 相关阅读:
    PHP数组简介
    如何在不使用系统函数的情况下实现PHP中数组系统函数的功能
    弹性盒布局display:flex详解
    关于JS面向对象中原型和原型链以及他们之间的关系及this的详解
    如何使用AngularJS对表单提交内容进行验证
    如何用canvas画布画旋转的五角星
    MYSQL常用函数以及如何操作数据
    数据库基础以及表的创建
    PHP中的OOP
    PHP中数组的遍历
  • 原文地址:https://www.cnblogs.com/juefeiye/p/eventmy123.html
Copyright © 2011-2022 走看看