このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【6日でできるVisual Basic2022入門】③間違い漢字探しゲーム:画面の設計①

③間違い漢字探しゲーム:画面の設計①
本章では、画面を上下二段に分ける SplitContainer を配置し、上段=操作エリア(探す漢字・記録・Start)、下段=ゲーム盤(4×4 ボタン)の土台を作ります。Orientation=Horizontal、Dock=Fill、SplitterDistance≈70px(最小70px)を推奨。リサイズに強くするため Panel1/2 の MinSize と、割合ベースの距離調整(Load/Resizeで再計算)も紹介。次章で各コントロールを配置できる状態に整えます。

3.間違い漢字探しゲーム:画面の設計①-SplitContainerコントロールの配置
3.1. この章のゴール
- 画面を「上=操作(探す漢字・記録・開始)」「下=ゲーム盤(4×4 のボタン)」に上下分割
- リサイズしても比率が破綻しない
SplitterDistance設計 - 次章でコントロールを貼るための“土台”を完成
3.2. ワイヤーフレーム(上下分割)

3.3. SplitContainer の基本
| 用語 | 概要 | 本アプリでの使い所 |
|---|---|---|
SplitContainer | 2 枚の Panel を Splitter で区切るコンテナ | 上下で“機能分離”し操作性UP |
Orientation | Horizontal(上下)/Vertical(左右) | Horizontal を選択 |
SplitterDistance | 先頭側パネル境界からの距離(px) | 上段の高さを確保 |
IsSplitterFixed | スプリッタ固定(true)/可動(false) | 学習用は可動のまま |
3.4. 配置手順(デザイナ)
SplitContainer の配置
1.ツールボックスの「コンテナー」を展開します。

2.SplitContainerをフォームに配置して、「SplitContainer」上を右クリックします。
ポップアップメニューから「SplitContainer」を選択します。

3.右上の「▶」をクリックして、メニューを表示します。
「上下スプリッターの方向」を選択します。

パネルが上下分割に切り替わります。

4.「SplitterDistance」を70にします。

5.フォーム全面に広げる(Dock=Fill を推奨)※デフォルト値
SplitContainer1 の推奨プロパティ
| プロパティ | 設定値 | ねらい |
|---|---|---|
| (Name) | SplitContainer1 | コードから参照しやすく |
| Orientation | Horizontal | 上下分割 |
| Dock | Fill | 余白なく全面使用 |
| SplitterDistance | 70(目安) | 上段の操作エリア確保 |
| SplitterWidth | 6 | つまみやすい幅 |
| Panel1MinSize | 70 | 上段が潰れないように |
| Panel2MinSize | 300 | 盤面確保(4×4 配置に必要) |
| FixedPanel | None | 双方が伸縮 |
| IsSplitterFixed | False | 実行時に調整可能 |
3.5. リサイズ安定化のための補助コード(任意)
高さに応じて SplitterDistance を自動調整します。フォームの Load と Resize で共通関数を呼ぶだけです。
Public Class FormKanjiHunt
Private Sub FormKanjiHunt_Load(sender As Object, e As EventArgs) _
Handles MyBase.Load
AdjustSplitter()
End Sub
Private Sub FormKanjiHunt_Resize(sender As Object, e As EventArgs) _
Handles MyBase.Resize
AdjustSplitter()
End Sub
' 上段を 18〜22% 程度に保つ例
Private Sub AdjustSplitter()
Dim ratio As Double = 0.2
Dim h As Integer = SplitContainer1.Height
Dim top As Integer = CInt(Math.Max(70, Math.Min(h * ratio, 140)))
' 最小サイズを尊重しつつ設定
SplitContainer1.SplitterDistance = top
End Sub
End Classポイント
- “割合+上下限”で安定。小画面でも上段が潰れず、大画面でも過度に大きくならない。
Dock=Fillにしておくと、フォームサイズ変更に自動追従。
3.6. Panel1/Panel2 に後続の役割ラベルを仮置き(任意)
配置確認のため、仮ラベルを置いておくと視認性が上がります(次章で削除可)。
| 対象 | 追加 | プロパティ例 |
|---|---|---|
| Panel1 | Label(上段) | Text="操作エリア(探す文字/記録/Start)", Dock=Top |
| Panel2 | Label(下段) | Text="ゲーム盤(4×4)", Dock=Top |
3.7. Anchor/Dock の考え方
| 機能 | 使い方 | 本章での推奨 |
|---|---|---|
| Dock | 親の辺に“張り付く” | SplitContainer1.Dock = Fill |
| Anchor | 指定辺との距離を保持 | 次章で個別コントロールに設定 |
| 併用 | 同一コントロールでの併用は非推奨 | 片方に統一 |
3.8. VB 2022 の関連イベント・命令(この章で登場)
| 要素 | 概要 | 用例 |
|---|---|---|
Handles MyBase.Load | フォーム初期化 | 初期 SplitterDistance 設定 |
Handles MyBase.Resize | サイズ変更時の追従 | 比率維持の再計算 |
SplitContainer.SplitterMoved | ユーザー操作検知 | 将来、位置の保存に応用 |
DockStyle.Fill | 全面配置 | SplitContainer1.Dock = DockStyle.Fill |
3.9. 配置チェックリスト
SplitContainer1が 上下分割になっている。Dock=Fillでフォーム全面に展開- 上段が約 70px(目安)で、最小 70px を下回らない。
- リサイズしても Panel2(盤面側)が十分な広さを保つ。
- 実行時にスプリッターをドラッグして高さ調整できる。
3.10. 次章への引き継ぎ(4×4 盤の土台)
- Panel1(上段):
TextHunt(探す文字)、TextTimer(記録・右寄せ)、ButtonStart、見出しLabelを横並び配置 - Panel2(下段):4×4=16 個の
Buttonを等間隔で配置(フォント大きめ、次章のプロパティ表で詳述) - Timer1:フォームに追加(コンポーネントトレイ、
Intervalは後で設定)
まとめ
本章では、SplitContainer で上下二段構成を確立し、SplitterDistance を“割合+上下限”で安定化させました。これで操作エリアとゲーム盤を明確に分離でき、リサイズにも強い土台が完成です。次章「④画面の設計②-コントロールの配置とプロパティ値の設定」で Panel1/Panel2 に具体的なコントロール(テキストボックス/ラベル/ボタン/4×4 ボタン群/タイマー)を配置し、プロパティ値を確定します。
