我有一个带有统计按钮的窗体应用程序(游戏)。 当用户按下统计按钮时,会弹出一个新窗口,在那里他可以看到他的统计数据。
问题是:用户点击统计按钮,弹出统计窗口。当他按下选项按钮来改变游戏的选项时,我有一个代码可以关闭游戏形式而不是统计形式。因此,如果他忘记关闭统计表格,它仍然是开放的。
如何从游戏表单中关闭统计信息表单?
答案 0 :(得分:3)
使用Form.Owner属性指定表单的所有者。在您的情况下,这可能是主窗口,或者是由用户触发生成新窗口的GUI元素的窗口。如果所有者关闭,新表格将关闭。这种关系是级联的,所以如果你将表格B的所有者设置为表格A,然后将表格C的所有者设为B,如果你关闭A或B,C将关闭(如果你关闭A,B也会关闭)。如果B产生C,但C与B独立有用,则将C的所有者设置为A(您可以通过表单B的所有者属性执行此操作),当B关闭时C将保持打开状态,但在A关闭时仍将关闭。
最后,如果使用Application.Run(Form mainForm)打开“main”程序窗体,当指定为参数的窗口关闭时,应用程序将完全退出。因此,如果可执行文件产生A,A产生B,B产生C,当A关闭时,应用程序关闭,所有窗口都关闭,无论所有权如何。
答案 1 :(得分:-1)
为什么不使用dialog
将其打开为ShowDialog()
,以便强制他关闭它,然后再返回选项表单?
如果游戏的形式是主要形式,那么它必须自动关闭其他剩余的形式,否则你必须在游戏形式的某个地方声明satasForm并设法在用户关闭你的游戏形式时关闭它
StatsForm sFrm = new StatsForm ();
public gameFrm()
{
InitializeComponent();
}
private void btnShowStateForm_Click(object sender, EventArgs e)
{
sFrm.Show(); //or call
// sFrm.ShowDialog();
}
private void gameFrm_FormClosing(object sender, FormClosingEventArgs e)
{
sFrm.Close();
}