在下图中,当我点击File-> New Game时,我看到这个窗口:
如果我继续并按开始游戏,一切都很好。但如果我只是点击红色X,我会收到此错误:
这是File-> New Game:
的代码private: System::Void newGameToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
{
NG->ShowDialog();
ShowPossible();
update_score();
if(pc_exists()==1)
ComputerPlay();
}
NG->ShowDialog()
显示新游戏对话框。
然后ShowPossible()
在棋盘上显示了一些内容(暗示可能的动作)。
那就是制造麻烦的东西。
我需要一些在X点击时从newGameToolStripMenuItem_Click()
退出而不是继续ShowPossible()
的代码。
我尝试在ready
格式中创建一个名为NewGame
的全局变量,并在表单加载时将其初始化为0,并且只有当我单击“开始游戏”时,它才会变为1.最后添加此条件以上功能:
...
if(ready)
ShowPossible();
...
所以这样,如果我没有点击开始游戏,只点击X,ready
将为0,它将不会进入ShowPossible()
。但它没有用。不知何故,当按钮Start Game的代码完成时,ready仍为0。
有没有更有效的方法来解决这个问题?
谢谢!
答案 0 :(得分:1)
编辑:
由于您使用的是System.Windows.Forms
,请检查DialogResult
枚举(谢谢Chris):
if (NG->ShowDialog() == System::Windows::Forms::DialogResult::Cancel)
return;
来自MSDN:
当表单显示为模式对话框时,单击“关闭” 按钮(表单右上角带有X的按钮) 导致隐藏窗体并设置DialogResult属性 to DialogResult.Cancel。