事件的创建和使用

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

namespace 代理和事件
{
    //继承事件基类
   public  class NumberEventArgs:EventArgs
    {
        public int State;
        public DateTime TimesTemp;
        //构造函数
        public NumberEventArgs(int state)
        {
            State = state;
            TimesTemp = DateTime.Now;
        }
    }
}

第一步:新建一个类从EventArgs继承,定义两个属性state和TimesTemp


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

namespace 代理和事件
{
    class NumberTask
    {
        //定义一个有参事件代理
        public delegate void StateChange(NumberTask sender,NumberEventArgs args);
        //创建一个事件代理的对象StateChangedEvent
        public event StateChange StateChangedEvent;
        public string TaskString = "测试";
        //判断事件是否为null
        public void OnStateChanged(NumberEventArgs args)
        {
            if (StateChangedEvent != null)
            {
                StateChangedEvent(this, args);                
            }
        }
        public void StartNumberTask(int num)
        {
            Random rnd = new Random();
            int number = rnd.Next(0, num);
            OnStateChanged(new NumberEventArgs(number));
        }
    }
}
第二步:定义一个事件的对象,定义事件的处理方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using 代理和事件.Resources;

namespace 代理和事件
{
    public partial class MainPage : PhoneApplicationPage
    {
        //声明一个对象
        NumberTask numberTask;
        // 构造函数
        public MainPage()
        {
            InitializeComponent();
        }

        private void btnhq_Clik(object sender, RoutedEventArgs e)
        {
            numberTask = new NumberTask();
            numberTask.StateChangedEvent+=OnstateChanged;
            numberTask.StateChangedEvent += OnstateChanged2;
            numberTask.StartNumberTask(1000);
        }

        public void OnstateChanged(object sender,NumberEventArgs args)
        {
           NumberTask task = sender as NumberTask;
            txtsz.Text = args.State.ToString()+task.TaskString;
        }
        public void OnstateChanged2(object sender, NumberEventArgs args)
        {
            MessageBox.Show(args.TimesTemp.ToLongTimeString());
        }

    }
}
第三步:定义一个事件方法,触发事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值