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());
}
}
}
第三步:定义一个事件方法,触发事件