Winフォームアプリでコントロールをキー入力でスムーズに動かす方法

キー入力をイベントでハンドラを動かそうとすると、ツッ、ツーーーーというように1入力目がカクつくのが解ります
これは、意味があって、通常メモ帳を含め人が入力する場合、キーをタップしたときに2つ入力されないように配慮されているからです

キー入力をイベントで受ける方法(カクつきます)

using System.Windows.Forms;

namespace ControlMove
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyCode == Keys.Right)
            {
                pictureBox1.Left += 2;
            }
            else if(e.KeyCode==Keys.Left)
            {
                pictureBox1.Left -= 2;
            }
        }
    }
}

キー入力をイベントで受ける方法(カクつかない)

ゲームの場合、この仕様は辛いですね
なので、タイマーイベントを活用した方法を紹介します

System.Windows.Input名前空間のKeybordクラスを使います
Key.Right等でのエラーは、インテリセンスで参照を追加してください

using System;
using System.Windows.Forms;
using System.Windows.Input;

namespace ControlMove
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            Timer timer = new Timer();
            // 20ms毎にタイマーイベントを発生させる設定とします
            timer.Interval = 20;

            // イベントを登録します
            timer.Tick += PictureMove;

            // タイマーを起動します
            timer.Enabled = true;
        }

        private void PictureMove(object sender, EventArgs e)
        {
            if (Keyboard.IsKeyDown(Key.Right))
            {
                pictureBox1.Left += 2;
            }
            else if (Keyboard.IsKeyDown(Key.Left))
            {
                pictureBox1.Left -= 2;
            }
        }
    }
}

タイマーイベントについて

別ページにまとめてあります