ウィンドウを作る

今回のC#プログラミング学習では、ウィンドウを作って遊んでみましょう。

C#プログラミングでは、ウィンドウのことをフォームと言ったりします。

なので今回は、フォームプログラミングの基礎を学んでいきましょう。

それと、文字だけではわかりにくいという場合には動画解説もあります。

ダウンロード

まずはここをクリックして、今回使用するファイル一式をダウンロードします。

ZIP形式になっているので、ダウンロードしたら解凍します。

すると「Step2」フォルダ内に、「Step2.txt」、「Rename.bat」と「Compile.bat」というファイルがあるのがわかると思います。

「Step2.txt」には、今回使用するC#プログラムが書かれています。

テキスト形式になっているので、メモ帳で開くことができます。

コンパイル

コンパイルするときは、まず「Rename.bat」を実行します。

するとテキストファイル「Step2.txt」が、C#ソースファイル「Step2.cs」になります。

次に「Compile.bat」を実行します。

するとC#ソースファイル「Step2.cs」が、実行ファイル「Step2.exe」になります。

「Rename.bat」と「Compile.bat」の中身を見てみましょう。

「Rename.bat」または「Compile.bat」ファイル上で右クリックまたは、アプリケーションキーを押します。

表示されるメニューの中から「編集」を選ぶと、それぞれのバッチファイルの中身を見ることができます。

中身は以下のようになっています。

「Rename.bat」は、「rename Step2.txt Step2.cs」です。

「Compile.bat」は、「C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe Step2.cs」です。

コンパイラまでのパスなど、あなたのパソコン環境に合わせて適当に書き換えてください。

どちらもすでに出てきた命令文なので問題ないと思います。

フォーム作成

それではC#プログラムでフォームを作って表示させてみましょう。

「Step2.txt」を開くと以下のようになっています。

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

/********************
クラス名「Step2」の宣言
「Form」クラスを継承
********************/
class Step2 : Form
{
/* Mainメソッドの宣言 */
public static void Main()
{
Step2 st = new Step2(); // インスタンスの作成
st.Text = "ステップ2"; // タイトル
st.BackColor = Color.Yellow; // 黄色
Application.Run(st);
}
}

ところどころに処理のヒントとなるようなコメントをつけたのでわかりやすいと思います。

プログラム内には、プログラマーがその処理内容をわかりやすくするためにコメントを自由に書くことができます。

ルールさえ守っていれば、基本的にはどこでも自由に書けます。

コメントの書き方には2種類あるので、ひとつひとつ見ていきましょう。

1つ目は、文字列を「/*」と「*/」で挟む方法。

「/*」と「*/」で挟んでさえいれば、複数行にわたってもOKです。

なので、複数行にわたって説明するような長いコメントを書くのに適しています。

2つ目は、「//」の後に文字列を書いて改行させる方法。

これは「//」から改行部分までがコメントとして扱われます。

なので、一言コメントを書くのに適しています。

このようなコメント機能を使うことにより、プログラムがわかりやすくなるという利点があるので、あなたも使ってみてください。

プログラム解説

ウィンドウを作るプログラムです。

C#では、ウィンドウのことをフォーム(Form)といいます。

それでは順にこのプログラムについて解説していきましょう。

既存クラスの利用宣言

まずは、このプログラム内で使用するウィンドウズ上の機能を提供してくれるクラス(プログラムファイル)を宣言し結びつける部分があります。

「using」の後に半角スペースを空け、クラス名を記述し「;」で締めます。

このプログラムでは、「System」、「System.Drawing」と「System.Windows.Forms」というクラスを使うことを宣言しています。

「System」は、C#で使う基本的な機能を担当するクラスです。

「System.Drawing」は、描画を担当するクラスです。

「System.Windows.Forms」は、フォーム形式のウィンドウを担当するクラスです。

クラスというとなんだか難しそうですが、ここで言うクラスというのは、プログラムの詰まったファイルのことです。

なので、クラス名に「.dll」を付けて、あなたのパソコンを検索するとヒットします。

具体的には、「System.dll」、「System.Drawing.dll」と「System.Windows.Forms.dll」ですね。

このプログラムではようするに、この3つのファイルの機能を使いますよと言っているわけです。

オリジナルクラス

次はあなたが自由にクラス名や、その機能を記述している部分に続きます。

クラスとはオブジェクトを作るための設計図のようなもので、操作の対象となるものはほとんどオブジェクトと呼ばれます。

このプログラムでは、「class クラス名 { 中身 }」という部分です。

この「中身」という部分で、このプログラムでやりたいことを記述(コーディング)していきます。

クラスの中には主に、メンバ変数の定義とメンバ関数(メソッド)の定義などをします。

メンバ変数とは、クラスの内部で宣言される変数のことで、メソッドとは、クラスの内部で宣言される関数のことだと思ってください。

変数とは、数値や文字を入れるための入れ物。

関数とは、ある目的を達成するためにひとまとめにされた命令群(プログラム)のことです。

ひとつひとつ説明していきましょう。

クラス名の宣言

まずは、クラス名を宣言しています。

「class Step2 : Form」という部分です。

class命令で、今からクラスの構造を示すことを宣言します。

この段階ではまだクラスの構造が示されるだけで、実際に実行されていないところがポイントです。

クラス名は「Step2」で、後ろに「:」を付け別のクラス名を指定することにより、そのクラスが持つ機能を継承することができます。

今回継承しているのは、Formクラスで、これは「System.Windows.Forms」という名前空間(プログラムの塊)に属するクラスになります。

つまり、正式名称は「System.Windows.Forms.Form」なんですが、最初の部分で「using System.Windows.Forms;」と宣言しているので、このプログラムの中では「Form」と書くだけで、「System.Windows.Forms.Form」クラスの機能を使えるということになるのです。

つまり名前は「Step2」クラスでも、Formクラスの機能を持っているということになります。

クラスの中身

「Step2」クラスの中身は、クラス名宣言直後の「{」から最後の「}」までです。

このプログラムでは、Mainメソッドが書かれているだけです。

Mainメソッドの宣言

「public static void Main()」というのがMainメソッドの宣言に当たります。

「public」とは、幅広くアクセスできるという意味です。

「static」とは、静的な作用を持つという意味で、動的なものは扱わないという意味です。

プログラミング初心者の場合、きっとこれだけ読んでもわからないと思いますが、今は「そんなもんなんだー」とでも思っておいてください。

ここまでがMainメソッドの前提条件で、ここからが本番です。

「void Main()」がMainメソッド(関数)の名前と、行き来するデータを表しています。

C#に限らず、関数を作成する場合、やり取りに関してある程度関数側で宣言することができるようになっています。

具体的には、関数を呼び出すときと処理が終わったときで、データの受け渡しができるようになっています。

データの受け渡し方にはいくつかのやり方があるんですが、最も基本的なやり方として、関数名の前後に行き来するデータの形式を指定するという方法があるんです。

「Main」は名前です。

その直後の「()」は関数を呼び出す際、どんなタイプのデータを渡すのかを指定する部分。

今回は「()」となっているので、何も渡しません。

関数にデータを渡すことを引数といいます。

関数名の前には関数処理が終わった後、どんなタイプのデータを返すのかを指定する決まりになっています。

今回は「void」になっています。

これは関数処理が終わっても、何もデータを返さないという意味です。

関数から返されるデータのことを、戻り値といいます。

Mainメソッドの中身

Mainメソッドは「public static void Main()」で宣言され、中身はその後の「{」から最後から2つ目の「}」までです。

プログラムが実行された時、コンピュータはMainメソッドを見に来ます。

でもまだこの段階では、見た目上、何も起こってはいません。

なので、Mainメソッドの中でデータの生成を指示し、アプリケーションとして動作させる必要があります。

インスタンスの生成

このプログラムは、フォームウィンドウを表示するものです。

ということは、まずはフォームデータの生成を指示する必要がありますよね。

このプログラムに限って言えば、フォームデータを生成する場合、前述のFormクラスを継承した「Step2」クラスを利用するのが最も現実的です。

C#でクラスを利用するためには、インスタンスを作成するのが決まりです。

インスタンスとは、設計図(クラス)を元に作られたオブジェクト(プログラム)の実体のことです。

インスタンスを作るためにはまず、インスタンスを格納するための変数を定義します。

変数定義構文は、「クラス名 変数名;」というのが基本です。

次に、「new」命令で目的のクラス名を指定しインスタンスを作成後、用意した変数に格納します。

ここで注意すべき点は、C#に限らず、変数というのはただの入れ物であって、変数を宣言しただけではインスタンスは作成されないところです。

何もいれなければ、空っぽの入れ物だけができるということです。

「変数 = new クラス名();」のように、「new」して始めてインスタンスが生成されます。

このプログラムでは、「Step2 st = new Step2();」でインスタンスを作成し、変数「st」に代入しています。

タイトルと背景

このプログラムで作成するフォーム(ウィンドウ)にタイトルと背景色を付けます。

それにはすでにインスタンスが格納されている変数「st」に「.」を付けて目的の命令を記述していきます。

C#ではこのような設定処理をプロパティといいます。

Textプロパティでウィンドウタイトルを、BackColorプロパティでフォームの背景色を設定します。

タイトルを付けている部分は、「st.Text = "ステップ2";」です。

「"」で挟まれた部分の文字列がそのままタイトルになるので、タイトル部分には「ステップ2」と表示されます。

背景色を指定している部分は、「st.BackColor = Color.Yellow;」という部分です。

これで背景色を黄色に設定しています。

実行

あとは、「System.Windows.Forms.Form」つまり…。

Formクラスを継承した「Step2」クラスの「Application.Run」メソッドを使って、変数「st」内のオブジェクト(プログラム)をアプリケーションとして実行させます。

このプログラムでは、「Application.Run(st);」という部分ですね。

これで今回のC#プログラム解説は以上です。

簡単電卓

C#プログラムで作った電卓アプリを公開しています。

電卓プログラムのソースファイルもありますので、興味がありましたらぜひどうぞ!