C#でフォームアプリケーションを作る場合、フォームのいろんな設定について知っておくとハンドリングが楽です。
例えばウィンドウをなしにしたり、常時上においたりなど。ここではフォームの設定とその機能について紹介します。
フォームのプロパティでできることは?
タイトルバーのカスタマイズ
ConrolBoxをFalseにするとアイコンが出ません。
また最大化最小化ボタンを利用不可にするにはMinimizeBoxやMaxmizeBoxをfalseにします。
常時上のウィンドウを作る
TopMostをTrueにすると、他のウィンドウに隠れることはなくなります。
透明ウィンドウを作る
Opacityを変更すると透明のウィンドウになります。
50%だとだいぶ薄いです。
起動時にフル画面にする
起動時に最大化させるのが一番簡単だと思います。
WindowStateをMaximizedにセットします。
バーもなしで最大化させるには「FormboderStyle」を「None」にしておきます。
キー入力をオフ
KeyPreviewを「False」にすると、Form自体はキーを取得しません。
主なプロパティ一覧
サイズ関連
・AutoScaleMode:自動スケール
0:なし font1:フォントに応じて Dpi 2:モニタに応じて Inherit 3:親を継承
・AutoSize:サイズ自動変更?
・Location:ウィンドウ位置
・Size:ウィンドウサイズ
・StartPostion:開始時の表示位置
WindowsDefult、CenterScreen、Manualなど。
・FormBorderStyle:フォーム枠の種類
fixed3d,sizable,fixedtoolwindowなど
バー関連
・Text:バーの文字
・Autoscroll:スクロールバー
・controlbox:右上の最大ボタンなどの表示オンオフ
・MaximizeBox:最大化ボタン
・MinimizedBox:最小化ボタン
・WindowState:最大化、最小化などの状態
メニュー
・MainMenuStrip:メニュー
色、アイコン、文字
・Icon:アイコン
・ShowIcon:アイコン表示
・ForeColor:色
・BackColor:背景色
・BacckgroundImage:背景画像
・BacckgroundImageLayout:背景画像のレイアウト、タイルなど
・TransparencyKey:透明色
・Opacity:ウィンドウの戸明度
・Font:文字種
インタラクティブ
・AllowDrop:ドロップアンドドロップを利用
・Cursor:表示カーソル変更
・KeyPreview:キー入力の受け取り
特殊
・Enabled:Form自体の利用可、不可
・ DoubleBuffered :画像のちらつきを抑えるダブルバッファのオンオフ
・IMEモード:日本語変換の設定
・Language:言語
・Localaizable:ローカライズ
・TopMost:常に上かどうか
フォームのイベント
起動時のイベント
フォーム作成時は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);
開いてから取得する
Form1では作るフォームに自分(This)を渡します。
Form2 dlg = new Form2(this);
DialogResult dlgRet = dlg.ShowDialog(this);
Form2では宣言のときに(Form1 f)として受け取れるように変更します。
Form1 f1;
public Form2(Form1 f)
{
InitializeComponent();f1 = f;
}
これでForm1でPublicに設定していた値にアクセスできます。
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」という項目があります。
これならどのフォームからでもアクセスできるので、そちらへ値をセットします。