ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » VisualStudio »【VisualStudio】フォームを固定ウィンドウ(ダイアログ)にする

【VisualStudio】フォームを固定ウィンドウ(ダイアログ)にする  


 久しぶりに Windows 用のツールでも作ろうかと思ったら、結構忘れてしまっていた。実は私が Visual Studio を一番使っていた時代は VB/VC++6.0 のときで、.NET Framework になってからはプロパティ名や仕様が異なってたりするので、プロパティやメソッドが見つからなかったりするんだよね(笑)。最近はあくまで自分用ツールをたまにしか作ってないけど、毎回調べるのも面倒なので最低限必要なものだけでもメモしておこうと思った。

 ウィンドウサイズを固定にするにはフォームの「FormBorderStyle」プロパティを指定する。「FixedSingle」「FixedDialog」「Fixed3D」「FixedToolWindow」などがあるが、基本的には見た目やアイコンの有無などが違うと考えれば良い。ちなみにデフォルトは「Sizable」でサイズ変更できる状態だ。フォームの右下にマウスを持っていけば、リサイズポインタになるのでわかる(固定ウィンドウの場合は通常ポインタになる※ポインタの設定がデフォルトの場合)。それでは簡単に視覚化しておこう。

●固定(リサイズ不可)のときは通常ポインタになる


●「Sizable」のときはリサイズポインタになる


●デフォルトは「Sizable」(サイズ変更可能)



(※) Visual Studio 2017 / Windows10(x64) で確認



■FormBorderStyle - FixedSingle




※エディタ上での見た目(実際の起動時の見た目はOSの設定・テーマなどにもよる)

 とりあえず固定ウィンドウ(ダイアログ)のアプリにするなら、これが一番良いと思う。「FixedDialog」の場合はフォーム左上のアイコンが無くなる。



■FormBorderStyle - Fixed3D




※エディタ上での見た目(実際の起動時の見た目はOSの設定・テーマなどにもよる)

 エディタ上ではウィンドウの枠が3Dになるが、実際には例えば Wondows10 のデフォルトでは見た目は変わらない。Visual Studio 6.0(Windows98等)のときはエディタ上での見た目に近かった気がするが、現在はOSが勝手に3Dっぽくしたり影を付けたりするので「FixedSingle」の方が無難かも知れない。



■FormBorderStyle - FixedDialog




※エディタ上での見た目(実際の起動時の見た目はOSの設定・テーマなどにもよる)

 いわゆる固定ダイアログをモーダルで使うなら、これが良いと思う。「FixedSingle」と違いフォーム左上のアイコンが無くなる。左上アイコンのメニューを使わせたくないときに利用するのも良い。



■FormBorderStyle - FixedToolWindow




※エディタ上での見た目(実際の起動時の見た目はOSの設定・テーマなどにもよる)

 文字通りリサイズできないツールウィンドウ用となる。「FixedDialog」と同様フォーム左上のアイコンが無くなる。最小化・最大化のアイコンも無い。ちなみに他のスタイルのときに最小化・最大化アイコンを無効にするにはそれぞれフォームの「Form.MinimizeBox」「Form.MaximizeBox」を false にすれば良い。


 他にもリサイズさせない方法として、「Form.MinimumSize」「Form.MaximumSize」でサイズを固定するとか、「Form.OnResize」イベントで強制的にサイズを戻す、なんて方法もある(以前はよく使われていた)。用途によって使い分けると良いだろう。


(関連記事)
【VisualStudio】【C#】ウィンドウのリサイズを制限する
【VisualStudio】ウィンドウの最大化・最小化を無効にする


スポンサーサイト

category: VisualStudio

thread: プログラミング

janre: コンピュータ

tag: VisualStudioリファレンス 
tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/263-27e20864
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop