直接解决问题: 在我的主要形式中,我有三个按钮,打开三种不同的形式。我会告诉你它是如何构建的。
MainForm
(这是三个按钮,上面有三个不同的表单名称)
TheoryForm
TasksForm
CompeteForm
我的TasksForm
内部是一个打开TheoryForm
的按钮。这是我的代码:
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.
}
而我无法弄清楚的是,当TasksForm
关闭时,TheoryForm
也应该关闭,现在它不会关闭。
答案 0 :(得分:0)
尝试将变量声明为TheoryForm
事件处理程序之外的TheoryButton.Click
,然后在TaskForm.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();
}
}
答案 1 :(得分:0)
仅仅因为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();
}
}
答案 2 :(得分:0)
您需要以某种方式连接父表单和子表单。 例如,在将子表单作为所有者的父表单时。
只需致电
TheoryForm_Child.Show(this);
答案 3 :(得分:0)
有一个非常简单的解决方案。您应该使用其他版本的Show方法:
Form TheoryForm_Child = new TeoriForm();
TheoryForm_Child.Show(this);
这就是全部。然后你的表格将成为理论形式的所有者。因此它会在关闭后自动销毁理论形式。
更多阅读:https://msdn.microsoft.com/en-us/library/szcefbbd%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396