我有" form1"那叫" GameForm"。它发送的东西是这样的:
var tmp = new Pjeu(P1, P2);
tmp.Show();
两者" P"是一个班级。在" GameForm"中,它最终会找到胜利者并自行关闭:
MessageBox.Show("Victory " + label3.Text, "Game Finished", MessageBoxButtons.OK);
this.Close();
我如何制作" Form1"知道它已关闭?我需要做两次游戏以找到2个赢家,所以我需要我的第一个表格来做两次游戏并等待它关闭以制作另一个。我找到了一些答案,但没有一个在我的背景下有效。
答案 0 :(得分:0)
在GameForm中:
public delegate void Winner();
public event Winner OnWinnerFound;
...
OnWinnerFound(); // Just call your event
MessageBox.Show("Victory " + label3.Text, "Game Finished", MessageBoxButtons.OK);
this.Close();
在你的Form1中:
var tmp = new Pjeu(P1, P2);
tmp.OnWinnerFound+=WinnerFound;
tmp.Show();
...
private void WinnerFound()
{
//Your code here
}
我不记得,也许有一个内置事件,当窗体关闭或窗体关闭时会发生。
答案 1 :(得分:0)
创建GameForm
时添加FormClosing
事件处理程序。
GameForm MyForm = new GameForm();
MyForm.FormClosing += new FormClosingEventHandler(GameForm_Closing);
MyForm.Show();
确保您可以访问GameForm
中表示使用get-set
public string Winner {get; set;} //just an example
然后创建处理程序,以便在表单关闭完成之前访问该值。
private void GameForm_Closing(object sender, FormClosingEventArgs e)
{
var obj = (GameForm)sender;
myForm1WinnerVariable = obj.Winner;
//or any other code you want to do as the form closes (eg, increment a variable)
}