.NET Framework SDKで始める.NETプログラミング(前編)
9.Hello World展覧会(6)
デジタルアドバンテージ 遠藤孝信 |
Windows Forms版Hello World
地味なコンソール・アプリケーションはもうたくさんだろう。次はウィンドウを開いて、グラフィカルに表示されるHello Worldプログラムを作ろう。ウィンドウを持つ通常のWindowsアプリケーションは、.NETではWindows Formsのアプリケーションと呼ばれ、具体的には、System.WinFormsネームスペースに含まれるFormクラスから継承したサブ・クラスとして実装する。
例えば、Windows Forms版Hello WorldをC#で記述すると次のようになる。
|
|||||||||||||||||||||||||||
Windows Forms版Hello Worldのソースコード | |||||||||||||||||||||||||||
|
さすがにコンソール・プログラムよりもコードは長くなるが、おそらくこれはウィンドウに文字を描画するための最低限のプログラムである。
このプログラムでは、これまでと同じく“WinHelloClass”クラスを定義している。これが7行目で、System.WinForms.Formクラスから継承したサブ・クラスとして定義していることが分かる。このクラスのインスタンスをパラメータとしてApplication.Run()(18行目)を呼び出すとウィンドウが開く。これがWindows Formsプログラムのスケルトンである。
最小化や最大化、終了など、ウィンドウとしての基本的な機能はすべてFormクラスで定義されているので、それらについてのコードを記述する必要はない。ここでは、ウィンドウ内部が再描画されるときに呼び出されるOnPaintメソッド内に、文字列の描画処理を記述する(9〜15行目)。実際にはまず、描画に必要なフォント・オブジェクトとブラシ・オブジェクトを生成し、それらをパラメータに指定して、DrawStringメソッドを呼び出す(11〜14行目)。描画に使用するGraphicsクラスは、System.Drawingネームスペースに含まれている。
次の画面はこのプログラムをコンパイルしたところだ。
Windows Forms版Hello Worldをコンパイルしたところ |
プログラムではいくつかのクラスを使用しており、コンパイラにこれらを指定しなければならないため、コンパイル・オプションも少々長い。 |
コンパイル・オプションも少々長い。このプログラムではいくつかのクラスを使用しているため、それらのクラスが含まれるDLLをコンパイル・オプションで指定する必要がある。これを行うのが“/r:”オプションである(これは省略形で、正式には“reference:”)。この“/r:”オプションによって、コンパイラは指定されたファイルからクラスについての情報を得る。
ここで“Microsoft.Win32.InterOp.DLL”は、System.WinForms内部で使用されているクラスのためのもので、Windows Formsを使用する場合には必ずオプション指定が必要となる。コンソール・アプリケーション版Hello Worldでこのオプションが不要だったのは、System.ConsoleクラスがデフォルトのDLLファイルであるmscorlib.dllに含まれていたからだ。どのクラスがどのDLLファイル(正確にはアセンブリ)に含まれているかは、インストールされるドキュメントに記載されている。または、.NET SDKに付属のサンプル・プログラムにも、これを検索するためのツールが含まれている。この詳細については後編で述べる予定である。
Windows Forms版のHello Worldを実行すると、次のようなウィンドウが表示される。
Windows Forms版Hello Worldを実行したところ |
今度はダイアログ・ボックスではなく、通常のウィンドウとしてHello Worldの文字列が表示されている。 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|