クリエイターの教科書

ChatGPT, Stable Diffusion, Visual Studio, Excelなど教科書

【Visual Studio】C#でフォームの使い方 [複数フォームの値の渡し方・フル画面・半透明・バーを消す]

C#でフォームアプリケーションを作る場合、フォームのいろんな設定について知っておくとハンドリングが楽です。

例えばウィンドウをなしにしたり、常時上においたりなど。ここではフォームの設定とその機能について紹介します。

フォームのプロパティでできることは?

タイトルバーのカスタマイズ

ConrolBoxをFalseにするとアイコンが出ません。

また最大化最小化ボタンを利用不可にするにはMinimizeBoxやMaxmizeBoxをfalseにします。

f:id:apicode:20200714145813p:plain

 

 

常時上のウィンドウを作る

TopMostをTrueにすると、他のウィンドウに隠れることはなくなります。

 

透明ウィンドウを作る

Opacityを変更すると透明のウィンドウになります。

50%だとだいぶ薄いです。

f:id:apicode:20200714145954p:plain

 

起動時にフル画面にする

起動時に最大化させるのが一番簡単だと思います。

WindowStateをMaximizedにセットします。

f:id:apicode:20200714151306p:plain

 

バーもなしで最大化させるには「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」にします。これで違うフォームからもアクセス可能となります。

f:id:apicode:20210223184901p:plain

 

後は、呼び出すときに変数をセットしてからダイアログをオープンします。

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」という項目があります。

 

これならどのフォームからでもアクセスできるので、そちらへ値をセットします。

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

プライバシーポリシー |〇利用規約 |〇問い合わせ