テトリスのガイドラインではホールドに関する記述があります。これによると

テトリミノを1個保持できる。
使うと現在のミノがホールドに入り、ホールドにあったミノが降ってくる
(最初だけはネクストが降る)。
1回使うと設置するまで使えない。

とあります。さっそくプログラムに組み込んでみましょう。

まず、デザイナでホールドされたテトリミノが表示される部分を作成します。

またキーボードによる操作もガイドラインでは決められています。

↓がソフトドロップなのはわかるとしてなぜか右回転は↑キーです。ちょっとやりにくい。またスペースキーにはこれまで回転を割り当てていましたが、ハードドロップを割り当てるべきと書かれています。ホールドはCキーまたは左右のShiftキーになっています。

← 左に移動
→ 右に移動
↑ 右回転
↓ ソフトドロップ
スペースキー ハードドロップ
Shiftキー ホールド
Ctrlキー 左回転
Zキー 左回転
Xキー 右回転
Cキー ホールド
ESCキー Pouse
F1キー Pouse

それではそのように変更しましょう。

ホールドするためにはホールドされているミノを格納する変数が必要です。

最初はホールドされているミノは存在しないので列挙体にNoneを追加します。

ピクチャーボックスにホールドされているミノのイメージを表示させる必要があります。TetoroTypesからイメージを取得するメソッドとしてGetImageFromTetoroTypeを作成します。

ホールドが実行されたら、現在落下中のミノをホールドします。

そしてこれまでホールドされていたものが存在しない場合は新しいミノを降らせ、存在する場合はこれまでホールドされていたミノを降らせます。

これは新しいミノを降らせるためのメソッドです。

これでよさそうなのですが、

ホールドは1回使うと設置するまで使えない

というルールがあります。そこで

これでホールドを使用すると設置されるまで使用することができなくなります。

またゲーム開始時に設定を初期化する必要があります。