C#でフォームアプリケーションを作る場合、フォームのいろんな設定について知っておくとハンドリングが楽です。
例えばウィンドウをなしにしたり、常時上においたりなど。ここではフォームの設定とその機能について紹介します。
フォームのプロパティ
タイトルバー
ConrolBoxをFalseにするとアイコンが出ません。
また最大化最小化ボタンを利用不可にするにはMinimizeBoxやMaxmizeBoxをfalseにします。
ウィンドウ
常時上のウィンドウを作る
TopMostをTrueにすると、他のウィンドウに隠れることはなくなります。
透明ウィンドウを作る
Opacityを変更すると透明のウィンドウになります。
50%だとだいぶ薄いです。
起動時にフル画面にする
起動時に最大化させるのが一番簡単だと思います。
WindowStateをMaximizedにセットします。
バーもなしで最大化させるには「FormboderStyle」を「None」にしておきます。
イベント
キー入力をオフ
KeyPreviewを「False」にすると、Form自体はキーを取得しません。
フォームのイベント
起動時のイベント
フォーム作成時はLoad、Activated、Shownといったイベントが起きます。
Loadはフォーム作成時のイベントで、変数の初期化などフォーム開始時に必要な設定を行うのにぴったりなタイミングです。
Activatedはフォームがアクティベート(オン)になったタイミング、Shownは表示されたタイミングですので、フォームのオンオフやアクティブになるならないのタイミングで必要な処理を書きましょう。
- Form.Load
- Form.Activated
- Form.Shown
終了時のイベント
アプリケーションを閉じると、フォームで次のイベントが次の順序で発生します。
- Form.Closing
- Form.FormClosing
- Form.Closed
- Form.FormClosed
- Form.Deactivate
参考:イベントの順序 - Windows Forms | Microsoft Docs
別のフォームを表示
別フォームを開く
別のフォームを用意して、別ウィンドウ、あるいはモーダルダイアログのように表示できます。
表示させるには、
Form2 form2 = new Form2();
form2.Show(this);
のようにフォームオブジェクトを作ってShowします。
ダイアログのようにモーダル表示させるには以下のように
Form2 form2 = new Form2();
form2.ShowDialog(this);
とします。モーダルのほうが、操作を完了するまでは他のウィンドウの操作を行わせない場合に有効です。
別フォームを閉じる
ボタンを押して閉じるだけなら「Close」メソッドを呼び出せば閉じることができます。
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
元のフォームの変数を引き継ぐ
設定用のダイアログを開く場合、元のフォームが保持している変数へアクセスしたいこともあるでしょう。
変数をセットしてから開く
先にForm2のほうへPublicな変数を用意しておきます。
public int iNum;
後は変数に値をセットしてからウィンドウをひらきます。
Form2 form2 = new Form2();
form2.iNum = 10;form2.ShowDialog(this);
controlの値をセットしてから開く
対処方法の1つは開くフォームのコントロールの設定へ直接アクセスすることです。
以下は開くForm2にあるNumericUpDownコントロールの値を直接指定する場合です。
まずは設定を変更するコントロールの「Modifiers」を「Public」にします。これで違うフォームからもアクセス可能となります。
後は、呼び出すときに変数をセットしてからダイアログをオープンします。
private void configToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.numericUpDown1.Value = 10;
form2.ShowDialog(this);
}
「Properties.Settings」を使う
Visual Studioには簡単に値を保存・取得できる「Properties.Settings」という項目があります。
これならどのフォームからでもアクセスできるので、そちらへ値をセットします。