C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: フォームサイズ変更について


(過去ログ 97 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■57875 / inTopicNo.1)  フォームサイズ変更について
  
□投稿者/ say (7回)-(2011/03/19(Sat) 00:50:47)

分類:[C#] 

お世話になっております。

現在フォームのサイズを変更する際にwidth, heightの片方だけを変更したいと思っております。

具体的にはフォームが最大化された場合にwidthについては最大化させ、heightはそのままにしたいと思っております。
MaximumSizeプロパティでheight部分のみを変更するといったことは可能でしょうか?

よろしくお願いいたします。
引用返信 編集キー/
■57876 / inTopicNo.2)  Re[1]: フォームサイズ変更について
□投稿者/ やじゅ (1864回)-(2011/03/19(Sat) 04:11:52)
やじゅ さんの Web サイト
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);

        }

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -