确认问题:我的砖块图案按钮正在我的退出按钮中运行代码,原因不明
private void brickToolStripMenuItem_Click(object sender, EventArgs e)
{
//if (f2 != null) return;
f2 = new Form2();
f2.ShowDialog();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
myThread.Abort();
Close();
}
我正在创建这个破砖机游戏,它有一个主窗口的螺纹(包括桨和砖)和一个用于球运动的线程。在我的程序中,如果我单击按钮打开form2,整个程序就会终止,因为它正在运行另一个按钮的代码。
是否有另一种方法可以打开不会终止程序的form2?我尝试过不同类型的Show ShowDialog
,在这种情况下,我会看到form2四分之一秒。然后整个程序终止。
这是我的form1代码的链接。 http://pastebin.com/FB19qd7e Form1设计师代码:http://pastebin.com/RS8VZT5U
编辑:输出显示此
类型的第一次机会异常 mscorlib.dll中发生'System.Threading.ThreadAbortException' mscorlib.dll中出现“System.Threading.ThreadAbortException”类型的异常,但未在用户代码中处理
好的,我有三个按钮,一个退出,暂停和砖块(打开form2)。暂停按钮按预期工作,退出也是如此。但是,如果我单击砖块按钮,由于某种原因它会从退出按钮运行Thread.Abort。如果我注释掉退出按钮代码,那么砖块按钮的效果非常好。
答案 0 :(得分:4)
您似乎已将设计器中Deactivate
的{{1}}事件与Form1
事件处理程序相关联。
exitToolStripMenuItem_Click
当this.Deactivate += new System.EventHandler(this.exitToolStripMenuItem_Click);
的实例失去焦点时,会调用exitToolStripMenuItem_Click
。当您显示Form1
的新实例时,您现有的Form2
实例将不再是活动表单,并且会触发对事件处理程序的调用,而事件处理程序将调用{{1} }。