C#关闭自己的窗体同时关闭另外一个窗体
时间: 2024-12-19 14:20:44 浏览: 6
在C#中,如果你想在一个窗口关闭时自动关闭另一个关联的窗口,可以使用事件驱动的方式来实现。假设这两个窗口都从同一个基类派生,并且其中一个窗口(比如`FormA`) 拥有关闭操作的委托处理,可以这样做:
1. 首先,在`FormA`中声明并处理关闭事件:
```csharp
public partial class FormA : Form
{
public delegate void CloseOtherForm();
private CloseOtherForm closeOtherFormHandler;
public event CloseOtherForm CloseAnotherFormEvent
{
add { closeOtherFormHandler += value; }
remove { closeOtherFormHandler -= value; }
}
private void FormA_FormClosing(object sender, FormClosingEventArgs e)
{
// 关闭自身
e.Cancel = true;
this.Close();
// 如果已设置处理程序,触发它关闭其他形式
if (closeOtherFormHandler != null)
closeOtherFormHandler();
}
}
```
2. 然后,在`FormB`或其他需要关联的窗口中订阅这个事件并提供关闭操作:
```csharp
public partial class FormB : Form
{
private FormA formA;
public FormB(FormA formAInstance)
{
InitializeComponent();
this.formA = formAInstance;
formA.CloseAnotherFormEvent += CloseFormB;
}
private void CloseFormB()
{
Application.Exit();
// 或者直接 Close() 这个窗口
}
}
```
在这个例子中,当`FormA`关闭时,会触发`CloseAnotherFormEvent`事件,进而关闭`FormB`。
阅读全文