C# 在windows窗体中单击关闭按钮时的事件处理程序

C# 在windows窗体中单击关闭按钮时的事件处理程序,c#,.net,winforms,event-handling,C#,.net,Winforms,Event Handling,我想知道如果用户在windows窗体中单击关闭按钮,是否有任何事件处理程序。我最初的计划是,当用户单击close按钮时,它将向调用者或调用该表单的人返回一个布尔值。比如说 public void newWindow(){ NewForm nw = new NewForm(); nw.ShowDialog(); if(nw.isClosed){ do something } } 有可能吗?你就快到了 如果(nw.isClosed),则不

我想知道如果用户在windows窗体中单击关闭按钮,是否有任何事件处理程序。我最初的计划是,当用户单击close按钮时,它将向调用者或调用该表单的人返回一个布尔值。比如说

public void newWindow(){

      NewForm nw = new NewForm();
      nw.ShowDialog();
      if(nw.isClosed){
       do something
   }

}
有可能吗?

你就快到了

如果(nw.isClosed),则不需要
,只有当
nw
关闭时,
do something
行才会被执行

如果您需要从该对话框“返回”一个值,请注意:当您关闭对话框时,该对话框不会立即释放。所以你可以这样做:

NewForm nw = new NewForm();
nw.ShowDialog();
var x = nw.Property1

您应该查看事件,或者因为您使用的是
ShowDialog
,所以可以执行类似的操作。您还可以更改
FormClosing
事件中返回的

DialogResult dr = nw.ShowDialog();
if (dr == DialogResult.Cancel)
{
    //Do Stuff
}

如果使用的是.ShowDialog(),则可以通过DialogResult属性获得结果

public void newWindow()
{
    Form1 nw = new Form1();
    DialogResult result = nw.ShowDialog();
    //do something after the dialog closed...
}
然后在窗体1上单击事件处理程序:

private void buttonOk_Click(object sender, EventArgs e)
{
     this.DialogResult = DialogResult.OK;
}

private void buttonCancel_Click(object sender, EventArgs e)
{
     this.DialogResult = DialogResult.Cancel;
}
如果不希望以对话框形式打开新表单,可以执行以下操作:

public void newWindow()
{
    Form2 nw = new Form2();
    nw.FormClosed += nw_FormClosed;
    nw.Show();
}

void nw_FormClosed(object sender, FormClosedEventArgs e)
{
    var form = sender as Form2;

    form.FormClosed -= nw_FormClosed; //unhook the event handler

    //you can still retrieve the DialogResult if you want it...
    DialogResult result = form.DialogResult;
    //do something
}

订阅form.System.Windows.Forms类中的FormClose或FormClosing事件不会显示某些事件。请务必查看其MSDN。您将了解如何获取表单关闭事件。这只是一个示例,说明如果要从另一个表单访问值,您可能需要执行的操作。否则,您可以使用doSomething()方法调用或任何适合您需要的方法来替换它。它将在对话框窗体在方法按钮中关闭时执行OK_Click()我可以改用窗体关闭事件吗?而不是按钮OK_Click()?谢谢,它成功了!我从来不知道ShowDialog()返回DialogResult您可以在NewForm的FormClosing方法中更改DialogResult,并使用我显示的代码对其进行测试。单击X关闭表单时,默认对话框结果为Cancel