2015-12-08 125 views
1

我正在使用winforms + c#创建一个小项目,我有一个问题,因为我在项目中使用第二个窗体作为对话框。当用户尝试关闭此功能时,我想向他们提供确认屏幕,以防止在关闭表单时丢失任何数据。这个对话框窗体还将显示一个“主页”按钮,关闭对话框窗体,再次将它们与主窗口对齐。当在屏幕顶部按下Windows X按钮时,会出现问题,要求我设置“关闭窗体”事件进行管理。然而,这与我现在的代码如下所示创建一个无限循环。有什么办法可以避免这种情况?验证窗体关闭无限循环

private void frmCreateRoute_FormClosing(object sender, FormClosingEventArgs e) 
{ 

    DialogResult Safe_to_exit_check = MessageBox.Show("Are you sure you would like to go to the home screen? \n(Any entered data will be lost.)", "", MessageBoxButtons.YesNo); 

    if (Safe_to_exit_check == DialogResult.Yes) 
    { 
    this.Close(); 
    } 
} 

和简单的:

private void Home_button_Click(object sender, EventArgs e) 
{ 
    this.Close(); 
} 

的home键。

感谢

+1

你需要设置'e.Cancel = TRUE;如果用户选择不同于任何东西是的 –

回答

1

您需要设置e.Cancel=true如果用户选择比DialogResult.Yes不同的什么东西,否则让表格收盘:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    var result = MessageBox.Show("Are you sure you want to close the form?", 
            "Close", MessageBoxButtons.YesNoCancel); 

    if (result != System.Windows.Forms.DialogResult.Yes) 
     e.Cancel = true; 
} 
+1

完美!这是整理出来的。感谢代码示例。 – user2874417

+0

欢迎您:) –

4

在你的FormClosing,设置:

e.Cancel = true; 

,以防止关闭窗体。那里不要使用this.Close()