このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【6日でできるVisual Basic2022入門】③今日の運勢アプリ:画面の設計

③今日の運勢アプリ:画面の設計

 本章では、今日の運勢アプリのUIを具体化します。上段に日付(DateTimePicker:DatePick)、中段に「占う」ボタン(ButtonTell)、その下に結果画像(PictureBox:PictureBoxResult)、下段にメッセージ(TextBox:TextResult)を配置。
 主要設定は PictureBox.SizeMode=StretchImage、TextResult は Multiline/ReadOnly/ScrollBars=Vertical、DatePick.Format=Short。AcceptButton=ButtonTell と適切なタブ順で操作性を最適化し、スナップラインで整列。最小サイズも決め、次章のリソースの追加に備えます。

3.今日の運勢アプリ:画面の設計-コントロールの配置とプロパティ値の設定

3.1. レイアウト方針とワイヤーフレーム

 日付入力は上段、実行ボタンはと結果の画像は中央、詳細メッセージは下段にまとめ、視線移動を最短にします。画像はのちの章でリソースを追加して表示させていきます。

3.2. 使うコントロール一覧

No種別(Name)主な役割
1FormFormUranai画面本体
2LabelLabelDate「今日の日付」見出し
3DateTimePickerDatePick日付入力
4ButtonButtonTell占い実行
5PictureBoxPictureBoxResult結果画像の表示
6TextBoxTextResult結果メッセージの表示(複数行)

3.3. デザイナでの配置手順

  1. フォームサイズをおよそ 480×360 に調整
  2. 上段左に LabelDate、その右に DatePick、右端に ButtonTell を横並び
  3. 1 行空けて中央に PictureBoxResult を大きめに配置
  4. 下段に TextResult をフォーム幅いっぱいに配置
  5. 位置と間隔はスナップラインで揃える(等間隔配置を活用)

ヒント
将来のリサイズ耐性を上げるなら TableLayoutPanel(行3×列3)に載せる方法も有効です。まずは手動配置で問題ありません。

3.4. プロパティ値の設定(詳細)

対象プロパティ設定値(例)目的
FormUranaiText今日の運勢タイトル
StartPositionCenterScreen画面中央開始
FormBorderStyleFixedSingleレイアウト固定
MaximizeBoxFalse最大化無効
FontMeiryo UI, 10–11pt日本語可読性
Size480, 360表示領域を確保
LabelDateText今日の日付見出し
AutoSizeTrue自動サイズ
DatePickNameDatePickコード参照名
FormatShort短い日付表記
ShowUpDownTrueスピン操作を許可
ButtonTellNameButtonTellコード参照名
Text占うボタン表示
Size: Width/Height100, 32押しやすさ
PictureBoxResultNamePictureBoxResultコード参照名
Size360, 160視認性
BorderStyleFixedSingle枠線で領域を明確化
SizeModeStretchImage縦横比を保って拡縮
TextResultNameTextResultコード参照名
MultilineTrue複数行
ReadOnlyTrue読み取り専用
ScrollBarsVertical長文に対応
BackColorWindow読みやすい背景
FontMeiryo, 10–11pt読みやすさ
Size: Height60表示領域を確保

操作性の改善
フォームの AcceptButton に ButtonTell を割り当てると Enter で実行できます(後述 3.6)。

3.5. タブオーダーとアクセシビリティ

 メニュー「表示」→「タブ オーダー」で 1) DatePick → 2) ButtonTell の順になるよう設定します。TextResult は ReadOnly かつ結果表示用なので TabStop=False にしておくと快適です。

3.6. キーボード操作の割り当て(Enter で占う)

 フォームを選択し、「AcceptButton = ButtonTell」 に設定します。これで Enter キーで占いが実行できます。将来キャンセル操作を付ける場合は「CancelButton」 に割り当てます。

VB 2022 の用語・命令ミニ解説

要素種別概要・使いどころ
AcceptButtonフォームのプロパティ指定ボタンに Enter を割り当てる
DateTimePicker.Format列挙体(DateTimePickerFormatShort/Long/Time/Custom から選択
PictureBox.SizeMode列挙体(PictureBoxSizeModeStretchImagePictureBoxコントロールのサイズに引き伸ばす
TextBox.ReadOnlyプロパティ入力不可にして表示専用に
ScrollBars列挙体None/Horizontal/Vertical/Both

3.7. 初期表示を整える最小コード(FormUranai.vb)

 デザイナ設定に加え、読みやすい初期状態に整えるコード例です(この章では占いロジックは実装しません)。

Public Class FormUranai
    Private Sub FormUranai_Load(sender As Object, e As EventArgs) _
        Handles MyBase.Load
        Me.MinimumSize = New Size(480, 360)
        Me.AcceptButton = ButtonTell
        DatePick.Value = Date.Today
        TextResult.Text = "[占う]を押すと、今日の運勢が表示されます。"
        TextResult.ForeColor = SystemColors.ControlText
        ' 画像は後章(リソース追加)で設定予定:
        ' Dim rm As New ComponentResourceManager(GetType(FormUranai))
        ' Dim Title As Image = CType(rm.GetObject("Title"), Image)
        ' PictureBoxResult.Image = Title
    End Sub
End Class

ポイント
Handles MyBase.Load はフォーム表示直前に 1 度だけ呼ばれ、初期化に最適です。Size 構造体で最小サイズを与えるとレイアウト崩れを防げます。

3.8. よくあるつまずきと対処

症状原因対処
文字が詰まって読みにくいフォントが既定で小さいフォームと TextResult の Font を Meiryo 10–11pt に
画像が小さく表示されるるSizeMode 未設定SizeMode=StretchImage に変更
Enter で実行できないAcceptButton 未設定フォームの AcceptButton を ButtonTell に
長文が見切れるScrollBars=NoneTextResult.ScrollBars=Vertical に

配置完了チェックリスト

  • DatePick と ButtonTell が上段に横並び
  • PictureBoxResult が中央で十分なサイズ
  • TextResult が複数行・読み取り専用・縦スクロール
  • Enter キーで占い実行(AcceptButton 設定済み)
  • 初期表示のガイダンス文が TextResult に表示

 この状態になれば、次章「④今日の運勢アプリ:リソースの追加」で結果画像(大吉/中吉/小吉/吉/凶/タイトル)をリソースとして追加し、続く章で 最終コード実装に進めます。