.NET Framework SDKで始める.NETプログラミング(前編)

9.Hello World展覧会(6)
- Windows Forms -

デジタルアドバンテージ 遠藤孝信
2001/02/10

p.1 p.2 p.3 p.4 p.5 p.6 p.7 p.8 p.9 p.10 p.11 p.12

Windows Forms版Hello World

 地味なコンソール・アプリケーションはもうたくさんだろう。次はウィンドウを開いて、グラフィカルに表示されるHello Worldプログラムを作ろう。ウィンドウを持つ通常のWindowsアプリケーションは、.NETではWindows Formsのアプリケーションと呼ばれ、具体的には、System.WinFormsネームスペースに含まれるFormクラスから継承したサブ・クラスとして実装する。

 例えば、Windows Forms版Hello WorldをC#で記述すると次のようになる。

  1: // winform.cs
  2:
  3: using System;
  4: using System.WinForms;
  5: using System.Drawing;
  6:
  7: public class WinHelloClass : Form
  8: {
  9:  protected override void OnPaint(PaintEventArgs e) {
 10:   Graphics g = e.Graphics;
 11:   Font font = new Font("Times New Roman", 26);
 12:   Brush brush = new SolidBrush(Color.Black);
 13:
 14:   g.DrawString("Hello Win World!", font, brush, 15, 15);
 15:  }
 16:
 17:  public static void Main() {
 18:   Application.Run(new WinHelloClass());
 19:  }
 20: }
Windows Forms版Hello Worldのソースコード
  4: ウィンドウを開くプログラムには、このネームスペースが必須となる。
  5: System.Drawingネームスペースには、描画のためのクラスが含まれている。
  7: System.WinForm.Formクラスからのサブ・クラス定義。このクラスのインスタンスをパラメータとしてApplication.Runを呼び出すとウィンドウが表示される(18行目)。
  9: ウィンドウの再描画時に呼び出されるOnPaintメソッド。文字列の描画はこのメソッド内部に記述する。メソッドのパラメータとしてPaintEventArgsオブジェクトが渡される。これには描画のための領域やGraphicsオブジェクトが含まれる。
  10: OnPaintメソッド内では、このGraphicsオブジェクトに対して描画を行う。
  11: “Times New Roman”、26ptのフォント・オブジェクトを作成する。
  12: 描画のための黒い色のブラシ・オブジェクトを作成する。
  14: フォントとブラシを使用して(15, 15)の位置に文字列を描画する。
  18: スタティックなメソッドAppilcation.Runによりウィンドウを作成する。

 さすがにコンソール・プログラムよりもコードは長くなるが、おそらくこれはウィンドウに文字を描画するための最低限のプログラムである。

 このプログラムでは、これまでと同じく“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の文字列が表示されている。

関連記事(Insider.NET内)
特集
.NET Framework入門
Insider's Eye
Visual Studio.NETベータ1日本語版の入手法を総括する
関連リンク
マイクロソフトの.NET Framework SDKベータ1 日本語版のダウンロード・ページ
.NET Framework SDKベータ1(英語版)のダウンロード・ページ
IEのホームページ
Microsoft Data Access Components (MDAC) 2.6 RTM (2.60.6526.3) 日本語版 ダウンロード・ページ
最新障害情報ページ
 

 INDEX
  [特集] .NET Framework SDKで始める.NETプログラミング(前編)
    1..NET Framework SDKとは?
    2..NET Framework SDKをインストールする前に
    3..NET SDKのインストール
    4.Hello World展覧会(1)
    5.Hello World展覧会(2) - C# -
    6.Hello World展覧会(3) - VB.NET,JScript.NET -
    7.Hello World展覧会(4) - マネージド C++ -
    8.Hello World展覧会(5) - MSIL -
  9.Hello World展覧会(6) - Windows Forms -
   10.Hello World展覧会(7) - Webサービス -
   11.Hello World展覧会(8) - Webアプリケーション -
 
  [特集].NET Framework SDKで始める.NETプログラミング(後編)

 



Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間