c# 生成事件
代码
public partial class Form1 : Form
{
public delegate void ActionEventHandler(object sender, ActionCancelEventArgs e);
public static event ActionEventHandler Action;
public Form1()
{
InitializeComponent();
button2.Click +=new EventHandler(button2_Click);
}
void button2_Click(object sender, EventArgs e)
{
ActionCancelEventArgs cancelEvent = new ActionCancelEventArgs();
BusEntity busEntity = new BusEntity();
OnAction(this, cancelEvent);
if (cancelEvent.Cancel)
label1.Text = cancelEvent.Message;
else
label1.Text = busEntity.TimeString;
}
protected void OnAction(object sender, ActionCancelEventArgs e)
{
if (Action != null) //捕获空引用错误
Action(sender, e);
}
}
#region ActionCancelEventArgs 类
public class ActionCancelEventArgs:CancelEventArgs
{
string message = String.Empty;
public ActionCancelEventArgs ():base(){}
public ActionCancelEventArgs (bool cancel):base(cancel){}
public ActionCancelEventArgs (bool cancel,string message):base(cancel)
{
this.message=message ;
}
public string Message
{
get{return message ;}
set{message =value;}
}
}
#endregion
#region BusEntity 类
public class BusEntity
{
string time = String.Empty;
public BusEntity()
{
Form1.Action += new Form1.ActionEventHandler(Form1_Action);
}
private void Form1_Action(object sender, ActionCancelEventArgs e)
{
e.Cancel = !DoActions();
if (e.Cancel)
e.Message = "Wasn't the right time.";
}
private bool DoActions()
{
bool retVal = false;
DateTime tm = DateTime.Now;
if (tm.Second < 30)
{
time = "The time is " + DateTime.Now.ToLongTimeString();
retVal = true;
}
else
time = "";
return retVal;
}
public string TimeString
{
get { return time; }
}
}
#endregion