俺はこんなかんじでやってるが、問題なし。


protected override void WndProc(ref Message m)
{
     switch(m.Msg) {    // メッセージ処理
       case 0xxxx:
        break;
       }

     Game.mapDraw();    // マップ処理
     Game.characterDraw(); // キャラクタ処理
     Game.padInput();     //入力処理
    base.WndProc(ref m); // 親クラスにもメッセージを送る(必須)
    this.Invalidate(); // 画面の更新(OnPaint()を呼んで再描画する)
}