キャッシングValue

C#用のプロジェクトを作る

新規プロジェクトの作成

 管理者の開発環境の都合上、説明に使う画面はVisual Studioを使うことにします。で、Visual Studioを起動して、まず最初に困ってしまうのは「何を選んだらプログラムが作れるのか?」です。知り合いによく「最初から何をしたらいいのかがわからない」といわれます。VisualStudioは4種類ものソフトの統合環境ですから、自分の使いたい環境を呼び出すのも少々複雑です。とりあえず、この講座で使うプロジェクトの作成法を紹介しておきます。

 まず、「Microsoft Visual Studio.NET 2003」を起動してください。起動の仕方は普通に「スタート」から起動してください。でもって、Visual Studioが起動すると以下のような画面が出てくるはずです。

 環境によって多少画面構成に違いがあると思いますが、そこは大丈夫でしょう。画面に出てくる「新しいプロジェクト」をクリックすればプログラムを作る環境「プロジェクト」が作成できます。VisualStusioはコーディングからコンパイル・リンクを総合的に自動的にやってくれる非常に便利なソフトです。プロも使っているような環境ですから、プログラムのソースファイルも当然一つでは済みません。そこで、それらを一括管理してくれる「プロジェクト」というものを一つのプログラムの基本単位として考えます。もし、上のような画面が現れなかった場合は、メニューの「ファイル」-「新規作成」-「プロジェクト」を選択してください。

 「新しいプロジェクト」をクリックすると上の画像のようなダイアログボックスが表示されます。ここで、新しく作るプロジェクトの種類を選択します。この講座で使うのは「Visual C#」で作る普通のWindowsアプリケーションですから、左のリストから「Visual C# プロジェクト」を選択し、次に右のリストから「Windows アプリケーション」を選択します。これでC#を使った普通のWindowsソフトを作る環境をVisual Studioが自動生成してくれます。
 あとは、プロジェクトの名前をプロジェクト名の欄に入力し、保存先のフォルダを選択して「OK」をクリックすればプロジェクトが作られます。作られたプロジェクトは、保存先のフォルダ内にプロジェクト名と同じ名前のフォルダが作られ、その中に保存されます。

 新しいプロジェクトが作られると、上のような画面が現れます。これがVisual C#のメインの開発画面です。普通のアプリケーションなら、画面に表示されている「フォーム」にボタンやらテキストボックスやらをペタペタと貼り付けていってプログラムを完成させます。(ちなみに、この講座で作るゲームではそういった作り方はほとんどしません。)このペタペタやる作り方がVisualC#の基本ですので、この章ではその作り方で簡単なものを作ってみます。

簡単なWindowsプログラム

文字列連結プログラム

 こんなようなプログラム、授業の課題でやった方もいるかと思います。C言語でこれを書くと、ポインターなり配列なりを使ってゴチャゴチャやらないといけないのですが、C#ならこの程度のことわずか1文で片付けてしまいます。

文字列連結プログラム

1番上と2番目のテキストボックスに文字列を入力して連結ボタンを押すと、3番目のテキストボックスに文字列が連結されて表示されるプログラム。
Cを使って書くと3時間くらい悩んだこのプログラムも、VC#を使えばものの5分で片付いてしまう。フォームへのコントロールの張り方とコードを書く場所を紹介する程度のサンプルプログラム。

フォームへコントロールを配置

 では、早速プログラムを作っていきましょう。まずはフォームをデザインします。さっきからフォーム・フォームと何度も使っていますが、「フォーム」とは画面に表示されているウィンドウみたいなもののことです。VC#はこのフォームにコントロール(ボタンなど)を貼り付けてデザインしてプログラムを作り上げます。ここでデザインしたフォームがプログラムを起動するとそのまま表示されます。

フォームデザインの仕方

「ツールボックス」(上のメイン画面の画像でいう、左のボックス)から「TextBox」を選択して、フォーム上をドラッグ&ドロップするとテキストボックスが配置されます。もしくは、「TextBox」をダブルクリックするとフォーム上に配置されます。

同様にして、フォーム上に「Button」を配置します。

配置が完了したら、マウスを使って各コントロールを左画像のように調節していきます。コントロールの位置や大きさは、配置した後でも自由に変えられます。もちろん、フォーム自体のサイズを調整することも可能です。

コントロールのプロパティを設定

 フォームのデザインが終わったら、今度は配置した各コントロールの設定を行います。コントロールの設定は「プロパティ」(上のメイン画面の画像でいう、右下のボックス)で行います。管理者はこのことを〜のプロパティ設定などと呼んでいます。(今後、この表現が出てきたらそのことだと思ってください。)

プロパティの設定法
 プロパティは、当然のことながら各コントロールごとに設定することが出来ます。設定したいコントロールをクリックして選択すると、プロパティウィンドウにそのコントロールの現在のプロパティが表示されますので、それを編集します。

 面倒なので、今回はボタンに表示される文字だけを変更したいと思います。フォーム上に配置したボタンを選択すると、プロパティウィンドウの中が左の画面のようになるはずです。そこから「Text」を選択して、「連結」と入力するとボタンに表示される文字が「button1」から「連結」へ変化するはずです。

 ちなみに、プロパティウィンドウの上のリストボックスに「button1」と表示されていますが、これはさきほど配置したボタンのプログラム内での名前で、当然変更できます。配置されたコントロールにはそれぞれ固有の名前がつけられており、それらはプロパティの「(Name)」で変更できます。


今回のプログラムでは、テキストボックスは上から順に「textBox1」「textBox2」「textBox3」、ボタンは「button1」です。これらはコントロールの名前で、「Text」プロパティをいじっても変化しないので注意してください。

プログラムのコードを書く

 さて、今までどうもプログラムっぽくないことを続けてきましたが、ようやくプログラムらしいコーディングの作業に入ります。といっても、実は今までのフォームのデザイン作業もプログラムコードを書くのと同じ作業だったのです。ただ単に、VisualC#がマウスを使ってカチカチデザインした結果を自動的にC#のプログラムコードに直していてくれただけのことなのです。このデザインを、コードから書くことももちろん可能なのですが、非常に面倒なだけなのでまずやることはないと思います。とにかく、フォームのデザインはすべて「Form1.cs」というファイルにC#のコードとして保存されていることは覚えておいてください。

 では、プログラムのコードを書きましょう。今回のプログラムは「ボタンを押すと文字列を連結する」というものなので、素直にボタンの動作をプログラムします。「button1」をダブルクリックしてください。すると、プログラムのコード(「Form1.cs」)が表示されます。おいおい、いつの間にやらナガ〜イコードが書かれていますが、これが今までデザインしてVC#が自動的に生成してくれたコードなのです。
 この中に、「ボタンが押されたときの動作」を書き込むわけですが…果たして、どこに…
 答えは、private void button1_Click(object sender, System.EventArgs e)という関数(メソッド)ないです。さきほど、「button1」をダブルクリックしてコードを表示したわけですが、その際にVC#は自動的にこの「button1_Click」という関数を自動的に生成し、「button1」がクリックされたときに「button1_Click」を呼び出すとForm1のコード上のあるところに自動的に書き足してくれました。もし、「button1」以外のコントロールをダブルクリックして開いていたなら、この関数はどこにも見当たりません。

 このように、ある動作が行われたときに関数を呼び出すような仕組みを「イベント」と呼び、「〜イベントが発生する」などという言い方をします。上のボタンのクリック動作をこの言葉を使って言い換えると、「button1のClickイベントが発生し、button1_Click関数が呼ばれる」などという言い方をします。ちなみに、各コントロールにはこのClickイベントのほかにも様々なイベントが存在し、それらはプロパティウィンドウのイベントのところで設定可能ですが、それはまた必要になったときに解説することにします。

 イベントの話をしているとまた長くなってしま、ので、とりあえず「button1_Click」関数が自動的に呼ばれることだけ理解してください。その中に、文字列を連結して表示するプログラムを書けばいいのです。
 テキストボックスに入力された文字列の値は、テキストボックスの「Text」プロパティで参照できるのですが、その参照をどうやるかが問題です。ここで「C言語」の構造体を思い出してください。構造体とは、内部に複数のメンバ変数を持った変数型でしたね。それで、構造体のメンバにアクセスするには…
 変数名.メンバ名
と、ドット演算子を使えばよかったですね。(この講座の対象レベルはこの程度です)実は、C#にはこの構造体をもっとバージョンアップしたような「クラス」というものが存在し、それを基本単位としてプログラムを進めていきます。フォームに配置されたコントロールはこの何かのクラス型(こんな言葉あるのか?)で、「textBox1」というのはその変数名みたいなものだと思ってください。そして「textBox1」というのは「Text」というメンバ変数を持っていると考えてみてください。(あくまで、ここではそう思ってください。正確に言うとプロパティの話をしなくてはならないので省略します)そうすれば、textBox1に入力された文字列を参照する方法がなんとなく想像がつくと思います。つまり、コントロールのプロパティを参照するには…
 コントロール名.プロパティ
で参照することが出来ます。「Text」プロパティは読み出しだけでなく、値を入れることも可能なので「textBox3.Text = 〜」などとやればtextBox3に表示される文字列を変更することが出来ます。ってことで「button1_Click」に書き足すコードは…
  textBox3.Text = textBox1.Text + textBox2.Text;  
 です。
 ん?と思われたかたがいるかもしれません。Cではあり得ない事ですが、C#にはなんと「文字列型」というものが存在しています。文字通り、文字列を格納できる型でなんとなんと、「+」で連結できます。ということで、これで完成です!

C#には基本的な変数型がCの5つに加えていくつか増えています。それらは細かな文法事項に記載しておきますので、お暇な方は見てみてください。

コンパイル…そして実行!

 さて、プログラムのコーディングが終了したので、早速コンパイルして実行しましょう。

プログラムの実行
画面のツールバー上にあるボタンをクリックするか、メニューの「デバック」-「実行」をクリックするとプログラムがコンパイルされ、コンパイルに成功すると自動的にプログラムが実行されます。(便利でしょ?)

コンパイルされたプログラムは、プロジェクトフォルダ(保存先のフォルダ)ないの「bin」フォルダ「Debug」に保存されています。この「Debug」というのは、プログラムをデバックモードでコンパイルしたということです。配布の際は「Release」モードでコンパイルしてください。(ここら辺のVC#の使い方は、他のページやVC#用の解説書で学んで下さい。)

まとめ。

 とりあえずではありますが、VC#でウィンドウズプログラムを作ってみました。クラスの概念を導入する前にC#のプログラムを解説するにはかなり無理がありましたが、簡単にWindowsプログラムが作れることと、VC#のプログラム作成の一連の流れがわかってもらえれば十分です。難しい話は、またおいおい…

 次回は、今回苦しかったので「クラス」の話をします。これを知っておかないと、はっきり言ってC#の話をするのが無理なので。それでは、また次回!