带按钮的Windows窗体隐藏面板仍处于活动状态

时间:2020-08-06 08:36:09

标签: c# winforms

首先,我必须使用Windows窗体,我知道这对制作游戏不利,但对学校而言却如此。

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

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

直到我单击其中一个按钮,此代码才能正常工作。单击任何按钮,即使没有代码的按钮,也无法按逃脱键再次取消暂停。使用此恢复按钮,计时器全部启动,游戏重新开始工作,但该表单未记录任何按键。

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错误声音,当您必须关闭警报等但尝试单击时发出声音(希望这很有意义)。有谁知道隐藏面板或阻止Windows声音后仍在激活面板的另一种方法?

1 个答案:

答案 0 :(得分:0)

我已经意识到我所要做的就是将按钮的焦点对准

this.Focus();