DOBON.NET DOBON.NETプログラミング掲示板過去ログ

XPでのフォームサイズ変更について

環境/言語:[OS : Windows 2000 Professional / 言語 : Visual Basic .NET / .NET Framework : 1.1]
分類:[.NET]

TINSと申します。
こちらでは初めて質問させて頂きます。

Form1上にMainMenuを配置し、A・B・Cが選択できるように登録しています。
Form1はプロパティでサイズを100×200に設定しています。
このプログラムを実行して、メニューからA〜Cを選択(Handles A.Select…)した場合、
フォームのサイズが変わるようなプログラムを作りました。
A=100×200、B=100×300、C=300×400 としています。
これがWin2000では期待通りの動きをするのですが、
XPでexeを実行し、メニューをセレクトすると、実際に設定したサイズより微妙に小さくなってしまいます。
サイズ変更を行なう際、XPには別途対応が必要なのでしょうか。

サイズ変更のコードは以下の二つを試しましたが、どちらも結果は同じでした。
Me.SetBounds(Me.Left, Me.Top, 100, 200, BoundsSpecified.Size)
Me.Size = New System.Drawing.Size(100, 200)
過去ログ、ネット共「サイズ変更 XP」等で検索しましたが、それらしい記事が見つけられませんでした。
(説明の為数値は実際のものではなく簡略化したものにしました。
実際は156のような半端な数です。)
> 実際に設定したサイズより微妙に小さくなってしまいます。
とのことですが、これはどのように確認されたのでしょうか?

 想像でしかないのですが、画面サイズではなくクライアント領域が狭くなっているのではないかと。タイトル バーの高さなどは環境に依存しますから。
 一度 Form の Size 並びに ClientSize プロパティの値をそれぞれの環境で確認してみてください。

 既にその確認をされており、それでなお設定した値よりも小さくなるということでしたら申し訳ありませんm(__)m
2005/01/27(Thu) 12:01:11 編集(投稿者)

深山さん、返信ありがとうございますm(__)m

> とのことですが、これはどのように確認されたのでしょうか?
画面にギリギリ収まる画像をForm1の背景として指定していて、
それが欠けてしまいました。
そこで同じexeをもう一つ動かしてみて並べると、
メニューを使ってサイズを変更した後と起動直後は目視で分かる位サイズが変わっていました。

ClientSizeというプロパティがあったんですね…初めて知りました。
今までのSetBoundsやSizeの代わりに以下のようにしてみました。
Me.ClientSize = New Size(実際の背景画像の横, 同じく縦)
現在2000では今までと同様の動作が確認できました。
XPの環境ではちょっと今すぐには試せないんですが、
動作を確認して必ず結果報告をさせて頂きます。
思い通りの表示をする事ができました。

今までは枠やメニューの分も考えて縦横を地道に微調整しなくてはいけないと思っていたんですが、
ClientSizeはそういったものを取り除いたサイズを指定できるんですね…!
解決&とても勉強になりました。
深山さん、どうもありがとうございましたm(__)m
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板