- PR -

Formの最大化表示について

投稿者投稿内容
ナヲ
常連さん
会議室デビュー日: 2004/02/25
投稿数: 32
投稿日時: 2007-02-28 22:36
上の書込み間違えました。
 ×Formのサイズを取得する
 ○Formのサイズを指定する
です。

実際やってみて、できました!
簡単に作ってみただけだからか、タスクバーのサイズを変更したときなどに
画面のサイズ、位置が追従する際のレスポンスがちょっと悪いので、改善していきたいと思います。
ありがとうございました。
ナヲ
常連さん
会議室デビュー日: 2004/02/25
投稿数: 32
投稿日時: 2007-03-01 18:26
こんにちは。
いただいたアドバイスを参考に、Formのサイズを以下のように指定するようにしました。

'フォームの作業領域を取得する。
Dim Rect As Rectangle = Screen.GetWorkingArea(Me)

'枠サイズを取得
Dim BorderSize As Size = SystemInformation.BorderSize

' フォームの作業領域いっぱいにフォームを表示する。
Me.SetBounds(Rect.X - BorderSize.Width, Rect.Y - BorderSize.Height, Rect.Width + BorderSize.Width * 2, Rect.Height + BorderSize.Height * 2)

※Meは、操作中のFormのクラスです

しかし、タスクバーの設定が、
「タスクバーを自動的に隠す」
「タスクバーを常に手前に表示する」
となっている場合、マウスをタスクバーの位置に持っていっても、タスクバーが出てきません。

ためしに、Formの高さを上記の算出結果から「-2」してみたら出てきたのですが、
これだと画面の下辺とディスプレイの下辺の間に隙間ができてしまうので避けたいです。

「タスクバーを自動的に隠す」になっている場合は、位置、サイズの算出には別の方法を使わなければいけない、などと言うことがあるのでしょうか?

よろしくお願いいたします。
ナヲ
常連さん
会議室デビュー日: 2004/02/25
投稿数: 32
投稿日時: 2007-03-05 23:11
自己レスです。

↑に、「タスクバーを自動的に隠す」が設定されている場合、
隠れているタスクバーの付近にマウスも移動してもタスクバーが表示されない
と書いた件ですが、解決しました。

原因は、FormのFormBorderStyleプロパティでFix指定していたからでした。

そこで、FormBorderStyleプロパティはSizableとし、
WndProcのオーバーライドでウィンドウサイズ変更の対処をいれることで解決しました。

ウィンドウサイズ変更の対処処理が必要と言うことは、
じゃんぬねっと様や、囚人様の回答にも書いていただいていたのに、
FormBorderStyleプロパティでサイズ固定しているからOKだと思っていました・・・

ありがとうございました。


スキルアップ/キャリアアップ(JOB@IT)