【问题标题】:Windows Forms Hidden Panel with buttons is still active带有按钮的 Windows 窗体隐藏面板仍处于活动状态
【发布时间】:2020-08-07 02:06:06
【问题描述】:

首先,我必须使用 windows 窗体,我知道它不适合制作游戏,但它适合学校。

我使用带有按钮的面板为我的游戏设计了一个暂停菜单。这是当我按下退出键打开暂停菜单时的代码。

private void Game_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Escape)
    {
        if (paused == true)
        {
            paused = false;
            pnlPaused.Visible = false;
            tmrAnimations.Start();
            tmrGame.Start();
            tmrJump.Start();
            tmrPlayerMovement.Start();
            tmrLeftMovement.Start();
            tmrRightMovement.Start();
        }
        else
        {
            pnlPaused.BringToFront();
            pnlPaused.Visible = true;
            pnlPaused.BackColor = Color.FromArgb(80, 79, 249, 249);
            paused = true;
            tmrAnimations.Stop();
            tmrGame.Stop();
            tmrJump.Stop();
            tmrPlayerMovement.Stop();
            tmrLeftMovement.Stop();
            tmrRightMovement.Stop();
        }
    }
}

在我单击其中一个按钮之前,此代码可以正常工作。当任何一个按钮被点击时,即使是没有代码的,也不可能再次按下escape来取消暂停。使用此恢复按钮,计时器全部启动,游戏重新开始运行,但表单没有记录任何按键点击。

private void btnResume_Click(object sender, EventArgs e)
{
    paused = false;
    pnlPaused.Visible = false;
    tmrAnimations.Start();
    tmrGame.Start();
    tmrJump.Start();
    tmrPlayerMovement.Start();
    tmrLeftMovement.Start();
    tmrRightMovement.Start();
}

我已经尝试将此代码添加到按钮点击代码中

pnlPaused.Enabled = false;

此代码在重新启用用户输入时起作用,但每次按下一个键时都会播放 Windows 错误声音,当您必须解除警报等但尝试单击关闭时(希望这是有道理的)。有谁知道另一种修复面板在隐藏或阻止窗口声音后仍然处于活动状态的方法?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    我已经意识到我需要做的就是取消按钮的焦点

    this.Focus();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 2020-05-07
      • 1970-01-01
      相关资源
      最近更新 更多