【问题标题】:error on exiting a window退出窗口时出错
【发布时间】:2013-12-05 02:12:38
【问题描述】:

在下图中,当我点击 File->New Game 时,我看到了这个窗口:

如果我继续并按开始游戏,一切正常。但是,如果我只是单击红色 X,我会收到此错误:

这是文件->新游戏的代码:

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()

我尝试在表单NewGame 中创建一个名为ready 的全局变量,并在表单加载时将其初始化为0,只有当我单击开始游戏时它才会变为1。最后在上述函数中添加了这个条件:

...
if(ready)
    ShowPossible();
...

所以这样如果我不点击开始游戏,只点击X,ready 将是0,它不会进入ShowPossible()。但它没有用。不知何故,当按钮 Start Game 的代码完成时,ready 仍然为 0。

有没有更有效的方法来处理这个问题?

谢谢!

【问题讨论】:

  • ShowDialog 返回值类型:System.Windows.Forms.DialogResult DialogResult 值之一。
  • 点击break,看看调试器哪里出错了。
  • @RetiredNinja 但我说问题在于它进入了 ShowPossible()。我想这意味着我点击了break

标签: winforms visual-studio-2010 c++-cli


【解决方案1】:

已编辑:

由于您使用的是 System.Windows.Forms,请检查 DialogResult 枚举(感谢 chris):

if (NG->ShowDialog() == System::Windows::Forms::DialogResult::Cancel)
    return;

来自MSDN

当表单显示为模式对话框时,单击关闭 按钮(表单右上角带有 X 的按钮) 导致表单被隐藏并设置 DialogResult 属性 到 DialogResult.Cancel。

【讨论】:

  • 我会根据正确的枚举值检查它。
  • 听起来不错。我不知道ShowDialog() 返回一个值。但现在我得到这个错误:error C2678: binary '==' : no operator found which takes a left-hand operand of type 'System::Windows::Forms::DialogResult' (or there is no acceptable conversion)
  • DialogResult.Cancel 给出此错误:error C2039: 'Cancel' : is not a member of 'System::Enum'。我试过 DialogResult->Cancel 。同样的错误。我也试过DialogResult::Cancel,我得到2个错误:一个说Cancel is an undeclared identifier,另一个说:C2039: 'Cancel' : is not a member of 'System::Windows::Forms::Form::DialogResult'
  • 试试上面的(对不起,我用的是C#语法,不是c++/cli)
  • @ryrich 部分有效。现在它总是到达return。也许那是因为在按钮 Start Game 我有代码 NewGame::Hide(); ?也许这会返回Cancel
猜你喜欢
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多