fc2ブログ

C#のプログラム構造について(2) Form1.Designer.cs

今回も、C#のプログラム構造について考えてみます。
前回の続きです。

Windowsアプリケーションから起動するとForm1が用意されます。
3)ここで、ソリューションエクスプローラを見てみます。

Form_0012.jpg

よく見ると
Form1.cs
Form1.Designer.cs
の下に
Program.cs
が、あります。前回は、Program.csについて無視してお話ししました。

Form_0013.jpg

右クリックをして、コードの表示(C)を開きます。

Form_0014.jpg

Program.cs
の中にmain関数が、ありました。

main関数のあるProgram.csを削除してみます。

Form_0015.jpg

「いくら何でも、まずいだろう」と思いながら。。。

Form_0016.jpg

OKをクリックして、デバッグ開始(F5)します。

Form_0017.jpg

やはり、ビルドエラーが、発生しました。
「エントリーポイントに適切な静的'Main'メソッドが、含まれていません。」
という、お叱りを受けました。

Form_0018.jpg

やむを得ないのでForm1.csにmain関数を追加します。
Program.cs を見直すと

Form_0019.jpg

Form1 を表示したいので
Application.Run(new Form1());
をコーディングして

Form_0020.jpg

デバッグ開始(F5)します。

From_0006.jpg

正常に、Form1 が表示されました。


4)ここで、前回と同じように、Form1.Designer.cs を削除します。

ツールボックス→ コモンコントロール→ MonthCalendar
のMonthCalendarをダブルクリック。または、
MonthCalendarをForm1へ、ドラッグ&ドロップします。

Form_0021.jpg

Program.csが、削除されているので、Form1.csの下の方に
private void InitializeComponent()
が、追加されています。

デバッグ開始(F5)します。

Form_0022.jpg

MonthCalendarが、表示されました。
が、何かカレンダーの雰囲気が違いますね。

Form_0023.jpg

main関数の
//Application.EnableVisualStyles();
のコメントを解除して、デバッグ開始(F5)します。

Form_0024.jpg

正常に、MonthCalendarが、表示されました。


今回
Form1.cs
Form1.Designer.cs
Program.cs
の3つのプログラムをForm1.cs の1つにまとめてみました。


一言
1つにまとめるのが、良いという実験ではありません。


C#のプログラム構造について(1) InitializeComponent()

C#のプログラム構造について考えてみます。

まず、Windowsアプリケーションから起動するとForm1が用意されます。
Form1.cs
Form1.Designer.cs
のコードが、自動的に作成されます。

From_0001.jpg

From_0002.jpg

よく見比べるとForm1.csの
InitializeComponent()
は、Form1.Designer.csの
private void InitializeComponent()
{
}
を読み込んでいることが、解ります。
今まで、プロパティで何かを設定すると、ここにコードが追加されます。

そこで、
1)かなり乱暴な実験ですが、

From_0003.jpg

のようにコメントに換え読み込めないようにして、デバッグ開始(F5)します。

From_0004.jpg

InitializeComponent()
を読み込まなくてもタイトルのないFormが、出来ます。

From_0005.jpg

Form1.Designer.csの
this.Text = "Form1";
をForm1.csにコピーしてタイトルを付けてデバッグ開始(F5)します。
this.は、省略できます。

From_0006.jpg

正常に、コンパイルできています。
そこで、今までプロパティで設定したコードを幾つか入れてみます。

From_0007.jpg

From_0008.jpg

このように、正常に反映されています。
public Form1()
{
}
の中にプログラムを追加しているのと
プロパティで追加するのと同じことになります。

2)今度は、
namespace WindowsFormsApplication1
{
}
もコメントにしてデバッグ開始(F5)します。

From_0009.jpg

From_0010.jpg

今度は、ビルドエラーが、発生しました。
これは、1)のForm1.Designer.csで
private void InitializeComponent()
{
}
しか、考えないで、この上のコードを無視した為です。

WindowsFormsApplication1は、Form1.Designer.csの
namespace WindowsFormsApplication1
{
}
全体に、また、Disposeは、
protected override void Dispose(bool disposing)
{
  if (disposing && (components != null))
  {
    components.Dispose();
  }
  base.Dispose(disposing);
}
プログラムされているので、思い切って、
ソリューションエクスプローラでForm1.Designer.csを削除してみます。

From_0011.jpg

デバッグ開始(F5)します。

From_0008.jpg

このように、Form1.Designer.csを削除しても、正常にコンパイル出来ました。


今回
Form1.cs
Form1.Designer.cs
の2つのプログラムをForm1.cs の1つにまとめてみました。

一言
1つにまとめるのが、良いという実験ではありません。


プロフィール

迫(Seko) 廣太郎(koutarou)迫 製作所(Seko Seisakusyo)

Author:迫(Seko) 廣太郎(koutarou)迫 製作所(Seko Seisakusyo)
C#ビギナーブログへようこそ!

最新記事
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
リンク