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

 

 

posted @ 2010-10-26 10:03  jorgen  阅读(315)  评论(0编辑  收藏  举报
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj