编写一个消息类,专门用于子类间做流程显示

程序下载地址:https://download.csdn.net/download/yue1453544229/11500830

流程消息类,该类使用单例模式,可以在各子类的流程消息传递,如果需要在子类中传递数据,则再写一个其他事件,用于数据传递,或用List,队列等进行传递。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication37
{
    class DispMsgHelper
    {
        //编写一个单例模式
        private static DispMsgHelper dispMsgHelper;
        private static readonly object locker = new object();
        private DispMsgHelper() { }
        public static DispMsgHelper GetDispMsgHelper()
        {
            if (dispMsgHelper ==null)
            {
                lock (locker )
                {
                    if (dispMsgHelper ==null)
                    {
                        dispMsgHelper = new DispMsgHelper();
                    }
                }
            }
            return dispMsgHelper;
        }
        public event EventHandler DispMsg;
        public void startDispMsg(MsgEventArgs e)
        {
            if (DispMsg != null)
            {
                DispMsg(this, e);
            }
        }
    }
    class MsgEventArgs : EventArgs
    {
        public string msgType { get; set; }
        public string msg { get; set; }
        public MsgEventArgs(string MsgType, string Msg)
        {
            this.msgType = MsgType;
            this.msg = Msg;
        }
    }
}

用于测试的子类1和子类2,子类中进行事件的触发。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication37
{
    class test
    {
        
        public test()
        {
           
        }
        public void  sendMsg()
        {
            
            DispMsgHelper.GetDispMsgHelper().startDispMsg(new MsgEventArgs("Info", "we"));
            
        }


    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication37
{
    class test2
    {
        
        public void sendMsg()
        {          
            DispMsgHelper.GetDispMsgHelper().startDispMsg(new MsgEventArgs("Info", "test2"));
        }
    }
}

在主界面类里进行响应事件,事件的挂载在该类中

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication37
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DispMsgHelper .GetDispMsgHelper ().DispMsg+=dispMsg_DispMsg;
            test t = new test();       
            t.sendMsg();
            test2 t2 = new test2();         
            t2.sendMsg();

            
        }

        void dispMsg_DispMsg(object sender, EventArgs e)
        {
            if (e is MsgEventArgs )
            {
                MsgEventArgs msgEventArgs = e as MsgEventArgs;
                MessageBox.Show(msgEventArgs.msgType + " " + msgEventArgs.msg);
            }
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值