2011/03/19(Sat) 04:15:29 編集(投稿者)
■No57875 (say さん) に返信
> 具体的にはフォームが最大化された場合にwidthについては最大化させ、heightはそのままにしたいと思っております。
> MaximumSizeプロパティでheight部分のみを変更するといったことは可能でしょうか?
MaximizedBoundsプロパティでサイズを制御できます。Form_Loadイベントでやってしまうと
アプリ起動後にタスクバーのサイズを変更した場合などに対応できないため、 WndProcで制御するようにしました。
あとは、マルチモニター時の対応がたぶん出来てないので、考慮が必要かも。
フォームが最大化されたときのサイズを指定する
http://dobon.net/vb/dotnet/form/maximizedbounds.html
ディスプレイの大きさ(画面の領域、解像度)を取得する
http://dobon.net/vb/dotnet/system/displaysize.html
// 最大化や最小化等するときに来るメッセージ
const int WM_SYSCOMMAND = 0x112;
// WM_SYSCOMMANDの内容(最大化)を示す値
const int SC_MAXIMIZE = 0xF030;
protected override void WndProc(ref Message m)
{
// 最大化のメッセージがきたら
if (m.Msg == WM_SYSCOMMAND)
if (((int)m.WParam & 0xFFF0) == SC_MAXIMIZE)
{
//最大化されたときのウィンドウの範囲を指定する
Rectangle rect = Screen.GetWorkingArea(this);
this.MaximizedBounds = new Rectangle(0, 0, rect.Width, this.Height);
}
// そのほかの処理は基本クラスにおまかせ
base.WndProc(ref m);
}