实例说明
用户对程序进行操作时,难免会有错误操作的情况,例如不小心关闭程序,如果尚有许多资料没有保存,那么损失将非常严重,所以最好使程序具有灵活的交互性。人机交互过程一般都是通过对话框来实现的,对话框中有提示信息,并且提供按钮让用户选择,例如【是】或【否】。这样用户就能够对所做的动作进行确认。正如前面所说的不小心关闭程序,如果在关闭程序之前提示用户将要关闭程序,并且提供用户选择是否继续下去,这样就大大减少了误操作现象。本例程序中的窗口在关闭时会显示一个对话框,该对话框中有两个按钮【是】与【否】代表是否同意关闭程序操作。实例运行结果如图1.45所示。
技术要点
窗口正要关闭但是没有关闭之前会触发FormClosing事件,该事件中的参数FormClosingEventArgs e中包含Cancel属性,如果设置该属性为True,窗口将不会被关闭。所以在该事件处理代码中可以提示用户是否关闭程序,如果用户不想关闭程序,则设置该参数为True。利用MessageBox参数的返回值可以知道用户所选择的按钮。下面详细介绍一下相关属性。
CancelEventArgs.Cancel属性用来获取或设置指示是否应取消事件的值。该属性结构如下:
public bool Cancel { get; set; }
l 属性值:如果应取消事件,则为True;否则为False。
实现过程
(1)创建一个项目,将其命名为Ex01_44,默认窗体为Form1。
(2)主要程序代码。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("将要要关闭窗体,是否继续?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
举一反三
根据本实例,读者可以实现以下程序。
使窗体的关闭按钮无效。
使窗体关闭出现在托盘中。