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



首先,我必须使用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();
}
}
}

在我单击其中一个按钮之前,此代码运行良好。当点击任何按钮时,即使是没有代码的按钮,也不可能再次按下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;

这段代码可以重新启用用户输入,但每次按下某个键时,都会播放窗口错误声音,即当你不得不取消警报等但尝试关闭时(希望这是有意义的(。有人知道另一种方法来修复隐藏后仍处于活动状态的面板或防止车窗发出声音吗?

我已经意识到我所需要做的就是用解除按钮的焦点

this.Focus();

最新更新