我使用c#作为我在高中的c#课程的最终项目,在winforms中做了一个简单的游戏。
游戏已经完成,但我只是想添加一些次要功能,例如重置和更改模式等按钮。但是当我添加这些按钮时,它们会“控制”箭头键并且我的“播放器”没有响应因为箭头键将焦点从1个按钮移动到另一个按钮。
你知道他们什么时候变成浅蓝色并且被“标记”了。
所以堆叠,我该如何解决这个问题?
编辑以澄清:
当表单上没有按钮或“button1.enabled = false;”时,播放器移动完美 当工具箱中的按钮添加到表单或“button1.enabled = true;”时,播放器doenst完全移动,
当按钮在窗体上时,播放器不会移动,因为用于控制播放器的箭头键现在用于“滚动”按钮并突出显示。
EDIT2:
我的意思是突出显示或标记。箭头键只是将标记从按钮1移到按钮2。http://puu.sh/8bmn2.png
答案 0 :(得分:1)
Button
很可能会将注意力从您的Form
上移开。
作为替代方案,如果您没有使用按钮,可以在MenuStrip
添加Form
并添加“重置”的菜单项, “更改模式”等
当您的用户关闭菜单时,焦点应返回到表单。它的优势在于可以将选项排除在外,而不是使用多个按钮使屏幕变得杂乱。
答案 1 :(得分:0)
您可以使用preview events来处理您关注的按键并覆盖其改变焦点的行为:
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;
}
}