【学習】WinFormsでLabelを使ってみよう(計算結果やメッセージを表示する)

広告

これまでの学習では、

  • TextBox で文字を入力する
  • ボタンを押して処理を実行する
  • Label に結果を表示する

という形でプログラムを動かしてきました。

しかし、Label の役割や、計算結果の表示方法をまとめて学んでいません。

テキストを表示する

という Label の基本を押さえましょう。

今回は Label(ラベル) を使って、2つの数値を足し算し、その結果を表示するアプリを作ります。

今日作るもの

TextBox に 2つの数値(例:100 と 50)を入力して 計算 ボタンを押すと、

100 + 50 = 150

のように、Label に計算結果が表示されます。数値以外を入力した場合は「数値を入力してください」と表示します。


ソリューションとプロジェクトを作る

Visual Studio で新しいプロジェクトを作ります。

  • テンプレート: Windows Forms アプリ (.NET Framework)
  • ソリューション名: LabelSample
  • プロジェクト名: LabelDemo

作成すると Form1 が表示されます。


フォームに配置するコントロール

フォームに次のものを配置します。

コントロール名前
Labelnum1Label
TextBoxnum1TextBox
Labelnum2Label
TextBoxnum2TextBox
ButtoncalcButton
LabelresultLabel

num1Label の Text を「数値1:」、num2Label の Text を「数値2:」、calcButton の Text を「計算」、resultLabel の Text を空にしておきます。


イベントを登録する

calcButton をダブルクリックすると、Click イベントのハンドラが自動作成されます。

その中で TextBox の入力値を int.TryParse で数値に変換し、足し算して resultLabel に表示するコードを書きます。


完成コード

using System;
using System.Windows.Forms;

namespace LabelDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void calcButton_Click(object sender, EventArgs e)
        {
            if (!int.TryParse(num1TextBox.Text, out int a))
            {
                resultLabel.Text = "数値1 に数値を入力してください";
                return;
            }

            if (!int.TryParse(num2TextBox.Text, out int b))
            {
                resultLabel.Text = "数値2 に数値を入力してください";
                return;
            }

            resultLabel.Text = $"{a} + {b} = {a + b}";
        }
    }
}

プログラムの流れ

TextBox に数値を入力
        ↓
計算ボタンをクリック
        ↓
int.TryParse で数値に変換
        ↓
変換に失敗したら「数値を入力してください」と表示
        ↓
成功したら足し算して resultLabel に表示

Label の役割

Label は、文字を表示するだけのコントロールです。ユーザーが編集することはありません。

コントロール役割ユーザー操作
TextBoxテキスト入力ユーザーが編集する
Labelテキスト表示プログラムで Text を更新する

静的ラベルと動的ラベル

Label には 2 つの使い方があります。

種類説明
静的ラベル設計時に Text を設定し、実行中は変更しない「数値1:」「合計:」など項目名
動的ラベルプログラムで Text を更新する計算結果、メッセージ、進捗など

今回の num1Label と num2Label は静的ラベル、resultLabel は動的ラベルです。


Text プロパティと文字列補間

Label の Text プロパティで、表示内容を取得・設定できます。

変数を埋め込むには $"" の文字列補間が便利です。

resultLabel.Text = $"{a} + {b} = {a + b}";

{a} や {a + b} の部分が、変数の値や式の結果に置き換わります。


int.TryParse とは

TextBox から取得した文字列を数値に変換するには int.TryParse を使います。

if (!int.TryParse(num1TextBox.Text, out int a))
{
    resultLabel.Text = "数値1 に数値を入力してください";
    return;
}
  • 変換に成功したら a に値が入り、true を返す
  • 変換に失敗したら("abc" など)false を返す

数値以外が入力されたときのエラー処理に使えます。


重要ポイント

Label は、テキストを表示するためのコントロールです。

  • Text プロパティ で表示内容を取得・設定する
  • 静的ラベル … 項目名など、変更しない表示
  • 動的ラベル … 計算結果やメッセージなど、プログラムで更新する表示
  • $"" の文字列補間で、変数を埋め込んだ表示ができる
  • int.TryParse で TextBox の入力を数値に変換し、計算結果を Label に表示できる

発展:Label のプロパティ

プロパティ説明
AutoSizetrue のとき、テキストに合わせてサイズが自動調整される
ForeColor文字色
Fontフォント(文字の種類・サイズ)

発展アイデア

Label を使うと、次のようなものも作れます。

  • 計算アプリ … 単価 × 数量の合計を表示(NumericUpDown と組み合わせると数値入力が楽)
  • 進捗表示 … 処理の進み具合を「処理中…」「完了!」と表示(ProgressBar と組み合わせ)
  • ステータスバー … フォーム下部に固定で状態を表示(StatusStrip
  • デジタル時計 … Timer で一定間隔ごとに Label に現在時刻を表示

Label は 結果表示の基本 です。Button、TextBox と組み合わせれば、実用的なアプリが作れます。

訪問数 1 回, 今日の訪問数 1回

広告