新たにフォームを作る
新たなフォームは、デザイナのソリューションエクスプローラのApplicationノード上でマウスを右ク
リックし、「追加」→「Windowsフォームの追加」で
作ることができます。デフォルトでForm1のみが表示されている場合は、自動採番され、Form2が作られます。
プログラム上から、フォームクラスのオブジェクトを生成するには、次のとおり行います。
Form Form2=new Form();
当然のことながら、Formオブジェクト名は一意である必要があります。
|
フォームを表示する
フォームを表示するには、Showメソッド又はShowDialogメソッドを用います。
Showメソッドでは、生成元のオブジェクトがそのまま残ります。
例えば、
private void Form1_Load(object sender, System.EventArgs e)
{
Form Form2=new Form();
Form2.Show();
}
とした場合、Form1とForm2が同時
に表示され、同時にフォーム上のコントロールを操作することができます。
一方、ShowDialogメソッドは生成元のオブジェクトからフォーカスを奪うとともに、生成元
を閉じます。
private void Form1_Load(object sender, System.EventArgs e)
{
Form Form2=new Form();
Form2.ShowDialog();
}
|
フォームの表示位置を設定する
フォームの画面上表示位置を設定するには、通常、Form
表示時に最初に呼び出されるLoadメソッド上で設定します。
private void Form1_Load(object sender, System.EventArgs e)
{
this.Left=100; //画面左端からの位置をピクセル単位で指定
this.Top =150; //画面上端からの位置をピクセル単位で指定
this.Width=500; //フォームの幅をピクセル単位で指定
this.Height=300; //フォームの高さをピクセル単位で指定
}
フォームを画面中央に表示するには、まず画面全体の大きさを取得します。
int screenw,screenh;
screenw=Screen.PrimaryScreen.WorkingArea.Width; //画面の幅
screenh=Screen.PrimaryScreen.WorkingArea.Height; //画面の高さ
次に中央位置を計算し、Left,Topプロパティに代入します。
this.Left = (screenw - this.Width
) / 2 ; //フォーム左端位置
this.Top = (screenh -
this.Height) / 2 ; //フォーム上端位置
|
フォームの背景色、背景イメージを設定す
る
フォームの背景色、背景イメージは、フォームのプロパティで設定します。このプロパティは通常、Form
表示時に最初に
呼び出されるLoadメソッド上で設定します。
private void Form1_Load(object sender, System.EventArgs e)
{
this.BackColor=Color.White; //背景色を指定
this.BackgroundImage =image; //背景イメージを指定
}
|
フォームを閉じる
フォームを閉じるには、Closeメソッドを実行します。
this.Close();
ShowDialogメソッドで開いたフォームの場合、Closeメソッドを実行してもフォームオブジェクトは捨てられないので、Dispose
メソッドを併せて実行することを推奨します。(Disposeすることによって使用メモリが開放されます。)
this.Dispose();
|
フォーム間を連動する
複数のフォームは、親フォーム、子フォームの関係で連動させることができます。
ここでは、Form1を親フォーム、Form2を子フォームとします。
子フォーム上のボタンをクリックすると、親フォーム上のラベルにメッセージが表示されるプログラムを作ってみましょう。
Form1上にツールボックスからラベルコントロールを配置します。すると、Form1のコードでは、次のとおり宣言文が記述されます。
private
System.Windows.Forms.Label label1;
子フォームでのクリックイベントで親フォームのラベルをコントロールするためには、private宣言をpublic宣
言に変更します。
public System.Windows.Forms.Label label1;
次にForm1のLoadイベントで、Form2を表示させます。この際に、親フォームForm1へのポインターを指定しておきます。
private void Form1_Load(object sender,
System.EventArgs e)
{
Form2 child = new Form2()
; // 子フォームの生成
child.pointer = this ; //
子フォーム内から親フォームを参照するためのポインターを指定
child.Show() ;
}
次に子フォームの定義部に親フォームへのポインターを宣言します。
public
class Form2 : System.Windows.Forms.Form
{
public Form1 pointer ; // 親フォーム参照のためのポインタ
これにより、先ほどのForm1でのポインター指定と連動させることができます。
最後に、子フォームのボタンクリックイベントで、親フォームのラベルにメッセージを表示させます。
private
void button1_Click(object sender, System.EventArgs e)
{
pointer.label1.Text = "子フォームからアクセスされました" ; // 親フォーム Form1 を操作
pointer.label1.Reflesh(); //
ラベルコントロールの表示を更新
}
|
フォームを最小化・最大化する
フォーム右上の最小化ボタンを押すと、フォームの表示は
消え、タスクバーにアイコン付きタイトルが表示されます。
これを、プログラムから実現するには、次の一行を入れま
す。
this.WindowState=
FormWindowState.Minimized; //フォームを最小化
最小化したときに、タスクバー表示を抑制するには、次のとおり指定します。
this.ShowInTaskbar=false;
ただし、タスクバー表示をしない場合に、タ
スクバークリックに変わるフォーム再表示手段を確保しておく必要がある
場合があります。このような場合、タスクバーアイコンを表示させる方法があります。
まず、デザイナーから、NotifyIconコントロールをフォーム上にドラッグ&ドロップします。
次に以下の1行をフォームのLoadイベントの中に記述してください。
this.notifyIcon1.Visible=true;
表示するアイコンの種類は、notifyIconのプロ
パティで指定しておいてください。
フォーム右上の最大化ボタンを押すと、フォームが画面上で最大表示されます。
これを、プログラムから実現するには、最小化同様に次の一行を入れます。
this.WindowState=
FormWindowState.Maximized; //フォームを最大化
上記の最小化で、最小化時にタスクバー表示を抑制し、notifyIconをかわりに表示させた場合の最大化方法について
は、「タスクバーアイコンを使う」を参照してください。
最小化、最大化、フォームサイズ変更など、フォームの大きさが変更された場合には、SizeChangedイベントが発生しま
す。大きさ変更を検知し、何らかの処理を行いたい場合は、次のように記述してください。
private void
Form1_SizeChanged(object sender, System.EventArgs e)
{
//大きさ変更時の処理をここに記述
}
|
フォームを隠す
フォームをクローズせずに、フォームの表示
だけを消したい場合は、次のとおり記述します。
this.Hide(); //フォームを隠す
フォームを透明にして隠したい場合は、透明度プロパティOpacityを操作する方法もあります。
this.Opacity=0.0 //透明度を0とする。半透明にするには、0,0〜1.0の範囲で透明度を指定する。
|
フォーム枠を設定する
フォームの枠を変更することによって、アプリケーションの印象や機能を変えることができます。
枠の種類は次の7種類が指定できます。
同じアプリケーションで複数のフォームを利用する場合、ユーザビリティの確保は重要なテーマですので、フォーム枠はできるだけ
統一すべきでしょう。
コー
ド
|
機
能
|
this.FormBorderStyle=None;
|
フォーム枠を消します。この場合、フォー
ムアイコン、タイトル、最大最小クローズボタンは表示されません。
|
this.FormBorderStyle=FixedSingle; |
フォーム
アイコン、タイトル、最大最小クローズボタンが表示されますが、フォームのサイズは固定されます。 |
this.FormBorderStyle=Fixed3D; |
FixedSingle表示の立体バー
ジョン。 |
this.FormBorderStyle=FixedDialog; |
フォームアイコンが表示されない以外は、
FixedSingleと同じです。 |
this.FormBorderStyle=Sizable; |
デフォルトのフォーム枠です。みかけはFixedSingle
と同じですが、フォームの右下にサイズ変更用グリップを付けて、フォームサイズの変更を可能にすることができます。
this.SizeGripStyle=SizeGripStyle.Show;
|
this.FormBorderStyle=FixedToolWindow; |
フォームアイコン、最大最小ボタンが表示
されません。フォームサイズの変更はできません。
|
this.FormBorderStyle=SizableToolWindow; |
フォームアイコン、最大最小ボタンが表示
されません。フォームサイズの変更は可能です。 |
|
フォームを強制的にアクティブにする
複数のフォームやマルチタスクにより、
フォーカスが他のフォームに移ってしまうおそれがある場合に、強制的に当該フォームをアクティブに
するには、Activateメソッドを使います。
this.Activate();
|