上QQ阅读APP看书,第一时间看更新
实例010 在窗体关闭之前加入确认对话框
实例说明
用户对程序进行操作时,难免会有错误操作的情况,例如不小心关闭程序,如果尚有许多资料没有保存,那么损失将非常严重,因此最好使程序具有灵活的交互性。人机交互过程一般都是通过对话框来实现的,对话框中有提示信息,并且提供按钮让用户选择,例如“是”或“否”。这样用户就能对所做的动作进行确认。正如前面所说的不小心关闭程序,如果在关闭程序之前提示用户将要关闭程序,并且提示用户选择是否继续下去,这样可大大减少误操作现象。本实例中的窗体在关闭时会显示一个确认对话框,该对话框中有两个按钮“是”与“否”,代表是否同意关闭窗体的操作。实例运行结果如图1.11所示。
图1.11 在窗体关闭之前加入确认对话框
技术要点
窗体正要关闭但是没有关闭时会触发FormClosing事件,该事件中的参数FormClosing EventArgs e中包含Cancel属性,如果设置该属性为true,窗体将不会被关闭。因此在该事件处理代码中可以提示用户是否关闭窗体,如果用户不想关闭窗体,则设置该属性为true。利用MessageBox参数的返回值可以知道用户所选择的按钮。下面详细介绍一下相关属性。
CancelEventArgs.Cancel属性用来获取或设置指示是否应取消事件的值。其语法如下:
public bool Cancel { get; set; }
如果应取消事件,属性值为true,否则为false。
实现过程
01 新建一个项目,将其命名为QueryClose,默认窗体为Form1。
02 主要代码。
01 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
02 {
03 //当单击"是"按钮时
04 if(MessageBox.Show("将要关闭窗体,是否继续?", "询问", MessageBoxButtons.YesNo) ==
DialogResult.Yes)
05 {
06 e.Cancel = false; //不取消事件的值
07 }
08 else//当单击"否"按钮时
09 {
10 e.Cancel = true; //取消事件的值
11 }
12 }
举一反三
根据本实例,读者可以实现以下功能。
◇ 使窗体的关闭按钮无效。
◇ 在系统托盘菜单中显示关闭按钮。