Winform打开了新窗体后关闭新窗体回到之前的窗体触发事件
时间: 2023-08-01 15:12:00 浏览: 53
在Winform中,可以使用ShowDialog方法打开一个模态窗体,当关闭这个模态窗体后,可以在父窗体上继续执行代码。可以使用FormClosing事件来处理窗体关闭事件,在这个事件中可以判断关闭的窗体是否是模态窗体,如果是,则可以在父窗体上执行相应的代码。
示例代码:
```
// 在父窗体中打开模态窗体
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.ShowDialog();
}
// 处理模态窗体关闭事件
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.FormOwnerClosing)
{
// 父窗体关闭时的处理代码
}
}
```
在父窗体中打开模态窗体时,可以使用ShowDialog方法,这会使打开的窗体变成模态窗体。在父窗体的FormClosing事件中,可以通过判断CloseReason属性的值来确定父窗体是否关闭,如果是,则可以在事件处理程序中编写相应的处理代码。
相关问题
Winform开启新窗体后关闭原来的窗体
要在打开新窗体时关闭原来的窗体,您可以使用以下代码:
```
// 在原来的窗体中打开新窗体
Form2 form2 = new Form2();
form2.Show();
// 关闭原来的窗体
this.Hide();
```
在这个例子中,我们在原来的窗体中创建了一个新的窗体,然后显示它。接下来,我们使用 `this.Hide()` 方法关闭原来的窗体,而不是 `this.Close()` 方法,因为这将导致应用程序关闭。请注意,您需要将 `Form2` 替换为您实际使用的窗体类名。
另外,您也可以在新窗体中订阅原来窗体的 `FormClosed` 事件,以便在新窗体关闭时关闭原来的窗体。以下是一个示例:
在原来的窗体中:
```
// 在原来的窗体中打开新窗体
Form2 form2 = new Form2();
form2.FormClosed += (sender, e) => this.Close();
form2.Show();
// 隐藏原来的窗体
this.Hide();
```
在新窗体中:
```
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
// 触发原来窗体的 FormClosed 事件
if (Owner != null)
{
Owner.Close();
}
}
```
在这个例子中,我们在新窗体中订阅了 `FormClosed` 事件,并在事件处理程序中关闭了原来的窗体。在原来的窗体中,我们使用 `form2.FormClosed += (sender, e) => this.Close();` 语句订阅了新窗体的 `FormClosed` 事件。这意味着当新窗体关闭时,它会触发原来窗体的 `this.Close()` 方法,从而关闭原来的窗体。
Winform窗体的关闭触发事件
Winform窗体的关闭触发事件可以通过Form类的Closing事件实现。在Closing事件中可以编写关闭窗体时需要执行的代码,例如保存数据、提示用户等。以下是示例代码:
```csharp
private void Form1_Closing(object sender, CancelEventArgs e)
{
// 窗体关闭时执行的代码
// 可以在这里保存数据、提示用户等
// 如果需要取消窗体关闭操作,设置e.Cancel为true
// e.Cancel = true;
}
```
在窗体设计器中,可以通过双击窗体的关闭按钮快速创建Closing事件的处理程序。