作成日: 2023/01/15
0

C# 学習7日目 フォーム コントロール

最後はフォーム コントロール

元々、Unityの学習の前段階として、C#の学習を始めたのですが、
Unity学習に入っても、C#を再び勉強することになりそうですので、
C#学習の最後の学習として、Windowsアプリケーションでしか出てこない、
フォーム関係と、習作をやって、Unity学習に移ることにしました。

ボタンクリックでトグルボタンとトグル表示

元のサンプルは、ボタンを押すとラベルの文字とボタンの文字が
変わるだけだったのですが、改造してトグルボタン動作とトグル表示を
するように作ってみました。

本のサンプルを元に改造したのですが、改造で追加した部分は重複的なところがあり、
あまり良いソースコード記述ではないのですが、
何をしているのかわかりやすいと思いこのままにします。

ボタンクリックのサンプルコード

疑似的なフロント画面(スタート画面)と疑似的なプレイ画面を
トグルボタンで行き来します。

using System;
using System.Drawing;
using System.Windows.Forms;

//System.Windows.Formsを継承する使い方
class SampleControl : Form
{
    private Label lb;
    private Button bt;
    private int _playing = 0;

    public static void Main()
    {
        Application.Run(new SampleControl());
    }

    public SampleControl()
    {
        this.Text = "ボタンでトグル";
        this.Width = 450; this.Height = 100;

        lb = new Label();
        lb.Text = "フロント画面\nスタートボタンを押してください";
        lb.Width = 250;
        this.BackColor = Color.WhiteSmoke;

        bt = new Button();
        bt.Text = "スタートする";
        bt.Top = this.Top + lb.Height;
        bt.Width = lb.Width;

        bt.Parent = this;
        lb.Parent = this;

		//イベントハンドラを登録
        bt.Click += new EventHandler(buttonClick);
    }

    public void buttonClick(Object sender, EventArgs e)
    {
        if (_playing != 1)
        {
            _playing = 1;
            this.BackColor = Color.LightBlue;
            lb.Text = "プレイ画面\n>>プレイ中<<!";
            bt.Text = "プレイをやめて フロント画面へ";
        }
        else
        {
            this.BackColor = Color.WhiteSmoke;
            _playing = 0;
            lb.Text = "フロント画面\nスタートボタンを押してください";
            bt.Text = "スタートする";
        }
    }
}

実行結果

btn_tggl.png

まとめメモ

ボタンで切り替えているのは
・背景色
・ラベルのテキスト
・ボタンのテキスト
です。
次のこの部分が、ボタンクリックイベントとイベント処理の部分を
つなげています。

bt.Click += new EventHandler(buttonClick);

詳しくはデリゲートを学んだほうが良いそうなのですが、
この辺りはUnityのC#学習の中でまた詳しく調べたいと思います。
今読んでいるC#本の中には詳しく書いてありませんでした。

次回の予定

次回は、習作の自作の前に、
もうちょっとだけWindowsフォームについて学習します。


これからゲームアプリとWindowsアプリを作りたい初心者です。 ゲームアプリとWindowsアプリ、共に経験ゼロです。 これからの体験が少しでも参考になれば幸いです。 目指す事 ・C言語学習→C#学習 ・Unity (C#) の勉強 ・Unityゲーム作成 ・Windowsアプリ(C#) 作成