我有一个窗体窗体应用程序(一个游戏),它有一个stats按钮。 当用户按下统计按钮时,会弹出一个新窗口,他可以查看他的统计信息。一个窗口关闭时关闭几个窗口
问题是:用户单击统计按钮并弹出统计窗口。当他按下选项按钮来更改游戏选项时,我有一个关闭游戏窗体但不显示统计窗体的代码。所以如果他忘记关闭统计表格,它仍然是开放的。
如何从游戏表单中关闭统计表单?
我有一个窗体窗体应用程序(一个游戏),它有一个stats按钮。 当用户按下统计按钮时,会弹出一个新窗口,他可以查看他的统计信息。一个窗口关闭时关闭几个窗口
问题是:用户单击统计按钮并弹出统计窗口。当他按下选项按钮来更改游戏选项时,我有一个关闭游戏窗体但不显示统计窗体的代码。所以如果他忘记关闭统计表格,它仍然是开放的。
如何从游戏表单中关闭统计表单?
使用Form.Owner属性指定表单的所有者。在你的情况下,这可以是主窗口,也可以是用户触发GUI元素以生成新窗口的窗口。如果业主关闭,新表格将关闭。这种关系是级联的,所以如果您将表格B的所有者设置为表格A,然后将C的所有者设置为B,那么如果您关闭A或B(如果关闭A,B也将关闭),C将关闭。如果B生成C,但C独立于B,则将C的所有者设置为A(您可以通过表单B的所有者属性进行设置),并且C在B关闭时保持打开状态,但在A关闭时仍然关闭。
最后,如果使用Application.Run(Form mainForm)打开“main”程序窗体,当指定为参数的窗口关闭时,应用程序将完全退出。因此,如果可执行文件产生A,则A产生B,而B产生C,当A关闭时,不管所有权如何,应用程序关闭并关闭所有窗口。
为什么不直接打开它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();
}
模态对话框对用户界面设置了重要限制。如果统计数据是实时游戏中的实时数据,则弹出统计数据作为模态对话框必须强制游戏暂停(在多人游戏中不可能),否则玩家可能会失去点数或游戏而无法控制主表单。主要应用于执行已停止并且用户必须知道原因的情况下,或者在没有用户对问题的响应的情况下正常执行无法继续的情况。统计窗口既不是这些。 – KeithS 2011-01-13 17:56:17
据我所知,游戏中的所有选项界面都可以用作对话框或全窗口外观,而这只是一个建议,如果你看看代码,你可以注意到`Show()`是用来做什么的 – 2011-01-13 18:47:37