C# 截取游戏命令的按钮
我在winforms中制作了一个简单的游戏,将c#作为我高中c#课程的最后一个项目 游戏已经完成,但我只想添加一些次要功能,如重置和更改模式的按钮等。但当我添加这些按钮时,它们会“控制”箭头键,我的“玩家”不再响应箭头键,因为这会将焦点从一个按钮移动到另一个按钮 你知道当它们变成浅蓝色并被“标记”时 那么stack,我该如何解决这个问题 编辑以澄清: 当窗体上没有按钮或“button1.enabled=false;”时,玩家可以完美移动 当一个按钮从工具箱或“button1.enabled=true;”添加到表单上时,玩家根本不移动 当按钮在窗体上时,播放器不会移动,因为用于控制播放器的箭头键现在用于在按钮之间“滚动”,然后高亮显示 编辑2:C# 截取游戏命令的按钮,c#,winforms,button,focus,controls,C#,Winforms,Button,Focus,Controls,我在winforms中制作了一个简单的游戏,将c#作为我高中c#课程的最后一个项目 游戏已经完成,但我只想添加一些次要功能,如重置和更改模式的按钮等。但当我添加这些按钮时,它们会“控制”箭头键,我的“玩家”不再响应箭头键,因为这会将焦点从一个按钮移动到另一个按钮 你知道当它们变成浅蓝色并被“标记”时 那么stack,我该如何解决这个问题 编辑以澄清: 当窗体上没有按钮或“button1.enabled=false;”时,玩家可以完美移动 当一个按钮从工具箱或“button1.enabled=tr
这就是我所说的突出显示或标记的意思。箭头键只是将标记从按钮1移动到按钮2 按钮很可能会从
表单
中窃取焦点
另一种选择是,如果您没有挂断使用按钮,您可以在表单中添加菜单提示
,并添加“重置”、“更改模式”等菜单项
当用户关闭菜单时,焦点应返回表单。它的优点是将选项移开,而不是用多个按钮将屏幕弄得乱七八糟。您可以使用它来处理您关心的按键,并覆盖它们的焦点改变行为:
private void Form1_Load(object sender, EventArgs e)
{
SetPreviewKeyDownToAllControls(this.Controls);
}
private void SetPreviewKeyDownToAllControls(Control.ControlCollection cc)
{
if (cc != null)
{
foreach (Control control in cc)
{
control.PreviewKeyDown += new PreviewKeyDownEventHandler(control_PreviewKeyDown);
SetPreviewKeyDownToAllControls(control.Controls);
}
}
}
void control_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
{
e.IsInputKey = true;
}
}
我们需要看一个例子来说明你的意思。您的问题是按钮正在聚焦,您可以尝试将this.Focus()
作为按钮处理程序中的最后一行,将焦点返回给表单。但是没有一个简单的例子,很难给出一个解决方案。我可以为你上传.exe,你可以明白我的意思吗?你不能在这里上传文件,我们不希望你上传到另一个网站链接到这里。我们需要一个错误的列表。尝试将按钮上的“TabStop”设置为false。这是某个地方问题的副本,如果我能找到它,我将链接…好的,我将编辑主要帖子。为“SetFeatureToAllControls”提供错误信息。我是一名c#初学者。我可能遗漏了什么吗?@Burmeister我错了,检查编辑的代码。恐怕不行。这样,当按下任何箭头键但播放机仍不移动时,按钮1的高光不会变为按钮2。值得一提的是,玩家是一个标签?你在哪里听箭头事件移动玩家?我的代码可能正在抑制您的事件处理程序;我不熟悉MenuStrips的工作原理,但我可能会研究一下。非常感谢。MenuStrip解决了这个问题。谢谢你,格兰特!