public FormMain()
{
InitializeComponent();
this.Closing += new CancelEventHandler(FormMain_Closing);
} /// <summary>
/// 关闭主窗口前的处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void FormMain_Closing(object sender, CancelEventArgs e)
{
DialogResult dr = MessageBox.Show("确定退出系统吗?", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
if (dr == DialogResult.OK)
{
//
//在这里请处理相关事务,比如保存等
//
Application.Exit();
}
else
{
e.Cancel = true;
}
}
this.Closing += new CancelEventHandler(FormMain_Closing);这句是什么意思呢?就这句不懂。
{
InitializeComponent();
this.Closing += new CancelEventHandler(FormMain_Closing);
} /// <summary>
/// 关闭主窗口前的处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void FormMain_Closing(object sender, CancelEventArgs e)
{
DialogResult dr = MessageBox.Show("确定退出系统吗?", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
if (dr == DialogResult.OK)
{
//
//在这里请处理相关事务,比如保存等
//
Application.Exit();
}
else
{
e.Cancel = true;
}
}
this.Closing += new CancelEventHandler(FormMain_Closing);这句是什么意思呢?就这句不懂。
this.Closing += new CancelEventHandler(FormMain_Closing);
上面的代码就是将Closing事件和FormMain_Closing方法绑定在一起,在窗体将要关闭时就去执行FormMain_Closing方法.你运行程序就会发现在你点右上角的关闭按钮时就会弹出一个对话框,问你是否要确定退出系统,点"是"程序就会关闭.否则程序保持原样.
那么,这个Closing成员到底是什么呢?
要说得清楚明白,我到是说不上来,如果你学过C或是C++,可以把这个Closing当成一个指针,一个指向某个函数的指针,调用this.Closing,就是执行它当时所指向的一个函数。好了,回到我们的问题中:this.Closing += new CancelEventHandler(FormMain_Closing);
这句就是为这个指针赋值,类型是CancelEventHandler,值(准确的说是变量名)是FormMain_Closing
就如同int abc;这句
int对应CancelEventHandler,是表示类型;
abc对应FormMain_Closing,表示变量名;FormMain_Closing这个变量的具体“值”,是什么呢?
因为this.Closing是一个指向函数的指针,它赋值为FormMain_Closing,那么FormMain_Closing必定
就是一个函数了,也是后面定义的具体内容:
/// <summary>
/// 关闭主窗口前的处理
/// </summary>
/// <param name="sender"> </param>
/// <param name="e"> </param>
void FormMain_Closing(object sender, CancelEventArgs e)
{
...
}我所能作出的,只能是这样的解释(如果你没有指针的概念,那么很难明白我在说什么),正统的解释,建立在对 delegate(委托)和event(事件)的充分理解上。