- 2017/09/17 【VisualStudio】ウィンドウの最大化・最小化を無効にする
- 2017/09/16 【VisualStudio】【C#】ウィンドウのリサイズを制限する
- 2017/09/15 【VisualStudio】フォームを固定ウィンドウ(ダイアログ)にする
- 2014/09/14 【VC++】【CLI】VC++ 2013 Express で CLI を使った Release バージョンをビルドする
- 2014/09/12 【VC++】【CLI】VC++ 2013 Express で CLI を使う
« prev next »
【VisualStudio】ウィンドウの最大化・最小化を無効にする 
2017/09/17 Sun [edit]
「固定ウィンドウ」「リサイズ制限」と来たら、あとは「ウィンドウの最大化・最小化」を設定できたら、基本的なフォームアプリケーションを作るには十分だろう。
ウィンドウの最大化・最小化をできないようにするにはフォームの「Form.MaximizeBox」「Form.MinimizeBox」プロパティを指定する。それぞれを false にするとアイコンが無効になる。
![]() | ![]() |
起動すると、最大化・最小化のどちらかを無効にするとアイコンがグレーアウトされ、両方無効にするとアイコンが表示されなくなる。しかしアラートのような固定ダイアログにしたい場合は「Form.FormBorderStyle - FixedDialog」を使った方が良いかも知れない。両方無効だけだとアイコンのメニューは表示できる。

●最小化を無効にする(MinimizeBox = false)

●最大化・最小化を無効にする(MaximizeBox = false, MinimizeBox = false)

●最大化・最小化を無効しただけなら、アイコンのメニューは表示できる

(関連記事)
【VisualStudio】【C#】ウィンドウのリサイズを制限する
【VisualStudio】フォームを固定ウィンドウ(ダイアログ)にする
【VisualStudio】【C#】ウィンドウのリサイズを制限する 
2017/09/16 Sat [edit]
前回、固定ウィンドウの設定方法「Form.FormBorderStyle」プロパティを書いたが、他の方法としてリサイズでの制限も書いておこう。最小・最大を同じにすれば、実質固定ウィンドウになる(※ただし、フォーム右下でリサイズポインタになる)。
ウィンドウのリサイズを制限するにはフォームの「Form.MinimumSize」「Form.MaximumSize」プロパティを指定する。
![]() | ![]() |
(※) Visual Studio 2017 / Windows10(x64) で確認
しかし、せっかくビジュアルツールを使っているのだから、デザイン画面で設定したサイズをそのまま使いたいことも多い。なので、コードで書く方法も覚えておこう。
●リサイズに「元のサイズ~2倍」の制限を付ける
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//ウィンドウの最小サイズを初期サイズにする
this.MinimumSize = new Size(this.Width, this.Height);
//ウィンドウの最大サイズを初期サイズの2倍までにする
this.MaximumSize = new Size(this.Width * 2, this.Height * 2);
}
}
}


またあまりスマートなやり方とは言えないが、以下のように最小・最大サイズを元のサイズにすれば、リサイズできないウィンドウになる。ただし、フォーム右下でリサイズポインタになるので、フォームを固定サイズにした方がユーザーにとってもわかりやすいだろう。
this.MinimumSize = this.MaximumSize = new Size(this.Width, this.Height);
(関連記事)
【VisualStudio】フォームを固定ウィンドウ(ダイアログ)にする
【VisualStudio】ウィンドウの最大化・最小化を無効にする
【VisualStudio】フォームを固定ウィンドウ(ダイアログ)にする 
2017/09/15 Fri [edit]
久しぶりに Windows 用のツールでも作ろうかと思ったら、結構忘れてしまっていた。実は私が Visual Studio を一番使っていた時代は VB/VC++6.0 のときで、.NET Framework になってからはプロパティ名や仕様が異なってたりするので、プロパティやメソッドが見つからなかったりするんだよね(笑)。最近はあくまで自分用ツールをたまにしか作ってないけど、毎回調べるのも面倒なので最低限必要なものだけでもメモしておこうと思った。
ウィンドウサイズを固定にするにはフォームの「FormBorderStyle」プロパティを指定する。「FixedSingle」「FixedDialog」「Fixed3D」「FixedToolWindow」などがあるが、基本的には見た目やアイコンの有無などが違うと考えれば良い。ちなみにデフォルトは「Sizable」でサイズ変更できる状態だ。フォームの右下にマウスを持っていけば、リサイズポインタになるのでわかる(固定ウィンドウの場合は通常ポインタになる※ポインタの設定がデフォルトの場合)。それでは簡単に視覚化しておこう。

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

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

■FormBorderStyle.Fixed3D
■FormBorderStyle.FixedDialog
■FormBorderStyle.FixedToolWindow
(※) 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】ウィンドウの最大化・最小化を無効にする
【VC++】【CLI】VC++ 2013 Express で CLI を使った Release バージョンをビルドする 
2014/09/14 Sun [edit]
おっと、Visual Studio 2013 の Release 版のビルドも CLI 設定しなくちゃならないのね。「System などの名前空間がない」とエラーが出てしまった。全自動に慣れると色々面倒に感じるね。基本的には Debug 版と同じ設定にすれば良いんだけどね。
VC++ 2013 Express で CLI を使う Release 版をビルドするには、
1.メニューの「プロジェクト」から「プロパティ」を開く。
2.上部の「構成」のプルダウンを「Release」に変更する。
3.構成プロパティの「全般」-「共通言語ランタイム サポート」を「共通言語ランタイム サポート(/clr)」にする。
4.しかし、このままだと起動時にDOS窓が出てしまうので、「リンカー」-「システム」-「サブシステム」を「Windows(/SUBSYSTEM:WINDOWS)」に設定する。
5.エントリポイントが main() なら、そのまま起動できるみたいだが、違う名前の場合は「リンカー」-「詳細設定」-「エントリポイント」で名前を編集する(main を書いておいても良い)。
6.あとは一旦「OK」してダイアログを閉じ、ツールバーのソリューション構成のプルダウンで「Debug」から「Release」へ変更してビルドする。
これで、プロジェクトの Release フォルダに exe ができる。
(参考) C++/CLI: Visual Studio 2013 で Windows フォームアプリケーションを作る
まぁ、両方同時に作りたければ、構成をカスタマイズするしかないみたいだね。昔はチェックボックスにチェックするだけで両方できたんだけどなぁ…。
【VC++】【CLI】VC++ 2013 Express で CLI を使う 
2014/09/12 Fri [edit]
PC買い替えたので、開発ツールも一新しようと思ったのだが、Visual Studio 2013 って新規プロジェクトに「Windows フォームアプリケーション」ってないのね。ある程度ソースも書かなくちゃならない。以前は全自動でできたのにな。フォームの作成は以下を参考に。
(参考) C++/CLI: Visual Studio 2013 で Windows フォームアプリケーションを作る
もう1つ、CLI も自分で設定しなくちゃいけないのね。今私が参考にしている資料が2010のものなのだが、2013ではデフォルトでは使えなかったので、コンパイルエラーが出てしまった。
VC++ 2013 Express で CLI を使うには、
1.メニューの「プロジェクト」から「プロパティ」を開く。
2.構成プロパティの「全般」-「共通言語ランタイム サポート」を「共通言語ランタイム サポート(/clr)」にする。
これで、using namespace System; などが使えるようになる。
しかし、毎回このフォームの作成と CLI のインクルードは面倒くさいな。ウィザード→全自動でなくなったことからも、Microsoft も Win アプリは C# に移行したいみたいだな…。