C# Windows窗体自定义控件键关闭事件无法正常工作

C# Windows窗体自定义控件键关闭事件无法正常工作,c#,visual-studio,input,picturebox,C#,Visual Studio,Input,Picturebox,我有一个小问题,我试图读取c#中的键输入,键a和D工作,但Z、空格和c不工作?这是我的密码: private async void RaceSelection_KeyDown(object sender, KeyEventArgs e) { if (movable == true) { if (e.KeyCode == Keys.A) { Character.Left -= 3

我有一个小问题,我试图读取c#中的键输入,键a和D工作,但Z、空格和c不工作?这是我的密码:

private async void RaceSelection_KeyDown(object sender, KeyEventArgs e)
    {
        if (movable == true)
        {
            if (e.KeyCode == Keys.A)
            {
                Character.Left -= 3;
                playerpos = Character.Location;
            }
            if (e.KeyCode == Keys.D)
            {
                Character.Left += 3;
                playerpos = Character.Location;
                if (Character.Bounds.IntersectsWith(pictureBox6.Bounds))
                {
                    if (Character.Bounds.IntersectsWith(pictureBox4.Bounds))
                    {
                        pictureBox4.Location = new Point(999999, 9999999);
                        Character.Top += 9;
                        await Task.Delay(100);
                        Character.Top += 9;
                        await Task.Delay(100);
                        Character.Top += 9;
                        await Task.Delay(100);
                        Character.Top += 9;
                        await Task.Delay(100);
                        Character.Top += 9;
                        await Task.Delay(100);
                        Character.Top += 9;
                        await Task.Delay(100);
                        Character.Top += 5;
                        this.Controls.Clear();
                        this.Controls.Add(GapFiller1);

                        dungeonone();

                    }
                }
                if (e.KeyCode == Keys.Space)
                {
                    Character.Top -= 25;
                    await Task.Delay(125);
                    Character.Top += 25;
                }
                if (e.KeyCode == Keys.C)
                {
                    if (Character.Bounds.IntersectsWith(pictureBox5.Bounds))
                    {
                        TownOne();
                    }
                }

                if (e.KeyCode == Keys.Z)
                {
                    if (Character.Bounds.IntersectsWith(pictureBox6.Bounds))
                    {

                        if (EntityVar.DraugarHealth == 1)
                        {
                            Engine.EntityVar.Draugartakesdamage = false;

                            this.Controls.Remove(pictureBox6);
                            LastKill = "Draugar";
                            label3.Text = "Well Done! but what is that ladder over there???";
                        }
                        else
                        {
                            Engine.EntityVar.DraugarHealth -= 1;
                            if (Engine.EntityVar.Draugartakesdamage == true)
                            {
                                this.Controls.Add(HitMarker);
                                HitMarker.BringToFront();
                                await Task.Delay(250);
                                this.Controls.Remove(HitMarker);
                            }

                        }

                    }
                }
            }
        }
    }

有人知道我做错了什么吗???顺便说一句,我正在做一个游戏,我很清楚我不是用最好的方式做的,但哦,我就是这样做的:D,不管怎样,如果你知道为什么它不起作用,我将非常感激

问题似乎在于你只是把代码括错了。在给定的代码中,Z、C和空格键处理程序实际上位于D处理程序中。我假设您不希望这个逻辑存在,所以将它们移到D处理程序之外,它将解决您的问题


另外,使用一个开关或其他if块来执行此操作:)

您如何确定它不工作?你能描述一下你的测试吗?