代码
public
partial
class
Form1 : Form
{
public delegate void ActionEventHandler( object sender, ActionCancelEventArgs e);
{
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
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