PictureBox movement stops in C#

In my C# WinForm game project, I came across an issue where everytime the up arrow key was pressed and I started to move the invader with the left and right arrow keys, the laser outputted would just instantly stop midair and stay there. Thus, the user would have to wait until the laser reaches the top of the form before moving on. I'm sure this has something got to do with the Threading processes in my code. Here is the code for the up arrow key input:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == Keys.Up)
        {
            laser = new PictureBox //Creates new instance of a PictureBox object, with following properties
            {
                Image = Properties.Resources.laser, //Imports laser image from the Resources 
                Size = new Size(20, 40), //Adjusts size of laser
                Left = cannonBox.Left + (cannonBox.Width / 2),
                Top = cannonBox.Top,

            };

            laser.BringToFront();
            this.Controls.Add(laser);
            laser.Show();

            laserSFX();


            for (int j = 0; j < 220; j++)
            {
                laser.Location = new Point(laser.Left, laser.Top - 2);
                Application.DoEvents();
                System.Threading.Thread.Sleep(10);
            }
            laser.Hide();


        }

        return base.ProcessCmdKey(ref msg, keyData);
    }

And the movement:

async void Game_Screen_KeyDown(object sender, KeyEventArgs e)
    {
        for (int i = 0; i < 50; i++)
        { 


        if (Form1.lives != 0)
        {

            if (e.KeyCode == Keys.Left)
            {

                if (cannonBox.Location.X < 0)
                {
                    cannonBox.Location = new Point(cannonBox.Left = this.Width, cannonBox.Top);
                }

                cannonBox.Location = new Point(cannonBox.Left -= 3, cannonBox.Top); //Changes location of cannonBox to a new location to the left
                Application.DoEvents();
                System.Threading.Thread.Sleep(10);

            }



            else
            if (e.KeyCode == Keys.Right)
            {
                if (cannonBox.Location.X + cannonBox.Width > screen.Width)
                {
                    cannonBox.Location = new Point(cannonBox.Left = 0 - cannonBox.Width, cannonBox.Top);
                }
                cannonBox.Location = new Point(cannonBox.Left += 3, cannonBox.Top); //Changes location of cannonBox to a new location to the right
                Application.DoEvents();
                System.Threading.Thread.Sleep(10); //Delays the movement by couple milliseconds to stop instant movement

            }

         }
      }           
 }

I'm not that advanced in making games with C# WinForm and was wondering how to fix this problem.