コントロールのグリッドを使用すると、非常に遅くなります。タイルのグリッドを描画する「正しい」方法は、タイルのグリッドを描画することです。
画像またはインデックス/キーの配列を画像コンテナーに取り、それらを描画する独自のコントロールを作成できます。
UserControl ではなく Control からカスタム コントロールを派生させます (UserControl はコントロール コンテナーであり、必要ありません。または、スクロール バーが必要な場合は ScrollableControl から派生します)。OnPaint メソッドをオーバーライドして描画を実行します。OnPaint に渡された Graphics オブジェクトを使用します。これには、テキスト、プリミティブ、およびビットマップを描画するためのメソッドがあります。
MouseDown/Up をオーバーライドしてユーザー入力を処理するか、コンシューマーに処理させて HitTest メソッドを提供し、特定の X、Y をグリッド インデックスに変換できるようにすることができます。
ユーザー入力に応じて楕円を描画するための C# Drawing circles in a panel というコードがあります。そのコードから、コントロールに何らかの状態を描画する例を見ることができます (その場合のコントロールはフォームですが、カスタム コントロールに推定することができます)。ちらつきを除去するためのコンストラクターでの SetStyle 呼び出しに注意してください。また、状態を変更するときに再描画を試みるのではなく、再描画する必要があることを OS に伝えるだけの無効化を行うことに注意してください。
更新しました
始めるための非常に大雑把な例を次に示します:
http://pastebin.com/DseuN56y