窗体关闭事件visual studio c#
直截了当地说: 在我的主窗体中,有三个按钮可以打开三个不同的窗体。我将向你展示它是如何建造的窗体关闭事件visual studio c#,c#,forms,events,C#,Forms,Events,直截了当地说: 在我的主窗体中,有三个按钮可以打开三个不同的窗体。我将向你展示它是如何建造的 MainForm(这里有三个按钮,上面有三个不同的表单名称) 理论->点击此按钮打开理论表单 任务->单击此按钮打开TasksForm 竞争->点击此按钮打开竞争表单 在我的TasksForm中有一个按钮,它将打开理论表单。这是我的密码: public partial class TasksForm : Form { public TasksForm() {
(这里有三个按钮,上面有三个不同的表单名称)MainForm
- 理论->点击此按钮打开
理论表单
- 任务->单击此按钮打开
TasksForm
- 竞争->点击此按钮打开竞争表单
- 理论->点击此按钮打开
TasksForm
中有一个按钮,它将打开理论表单
。这是我的密码:
public partial class TasksForm : Form
{
public TasksForm()
{
InitializeComponent();
}
public void TheoryButton_Click(object sender, EventArgs e)
{
Form TheoryForm_Child = new TeoriForm();
TheoryForm_Child.Show();
}
//Add some code here so that when `TasksForm` closes, the `TheoryForm_Child` closes too.
}
我不明白的是,当
任务表单
关闭时,理论表单
也应该关闭,现在没有。尝试在理论按钮之外的理论表单
中声明变量。单击事件处理程序,然后在任务表单中使用它。FormClosing
事件处理程序关闭它
public partial class TasksForm : Form
{
private Form TheoryForm_Child;
public TasksForm()
{
InitializeComponent();
FormClosing += TaskForm_FormClosing;
}
public void TheoryButton_Click(object sender, EventArgs e)
{
TheoryForm_Child = new TeoriForm();
TheoryForm_Child.Show();
}
public void TaskForm_FormClosing(object sender, FormClosingEventArgs e)
{
if(TheoryForm_Child != null)
TheoryForm_Child.Close();
}
}
仅仅因为TasksForm正在创建TheoryForm并不意味着当TasksForm关闭时,TheoryForm也会关闭。相反,您应该显式地关闭它,就像在TasksForm中处理关闭的事件一样,如下所示
public partial class TasksForm : Form
{
Form _TheoryFor_Child = new TheoryForm();
public TasksForm()
{
InitializeComponent();
Closed += TasksForm_Closed;
}
private void TasksForm_Closed(object sender, EventArgs e)
{
_TheoryFor_Child.Close();
}
private void TheoryButton_Click(object sender, EventArgs e)
{
_TheoryFor_Child.Show();
}
}
您需要以某种方式连接父窗体和子窗体。
例如,将父窗体作为所有者赋予子窗体
就叫
TheoryForm_Child.Show(this);
有一个非常简单的解决方案。您应该使用其他版本的Show方法,如下所示:
Form TheoryForm_Child = new TeoriForm();
TheoryForm_Child.Show(this);
就这些。然后你的表单将成为理论表单的所有者。所以它会在关闭自身后自动破坏理论形式
更多阅读: