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

フォーム表示時のフォームサイズ変更

環境/言語:[WindowsXP, C#, Framework 1.1だったような・・。]
分類:[.NET]

「フォームの位置と大きさを変更する」というのを見て
デスクトップ座標で幅と高さを指定するときはSetDesktopBoundsメソッドを使う!
というのはわかったのですが、フォームLoad時やPaint時に指定しても、どこかがおかしいためタスクバーにフォームが隠れてしまいます。
タスクバーに隠れずに上手いことフォームを表示させたいのですが、どうすればよいのでしょうか?
目的は、”タスクバーが上下左右どこにあっても、そのタスクバーに隠れないようにフォームを最大化で表示する”という事をやりたいのですが・・・
できたらさらに、タスクバーが移動した場合、その移動に合わせてフォームを再描画、とかもやりたいのですが・・・。
> 「フォームの位置と大きさを変更する」というのを見て
> デスクトップ座標で幅と高さを指定するときはSetDesktopBoundsメソッドを使う!
> というのはわかったのですが、フォームLoad時やPaint時に指定しても、どこかがおかしいためタスクバーにフォームが隠れてしまいます。
> タスクバーに隠れずに上手いことフォームを表示させたいのですが、どうすればよいのでしょうか?

確認してみましたが、LoadイベントハンドラでSetDesktopBoundsを使っても問題ありませんでした。

> できたらさらに、タスクバーが移動した場合、その移動に合わせてフォームを再描画、とかもやりたいのですが・・・。

タスクバーが移動したかどうかは、SystemEvents.UserPreferenceChangedイベントで分かるようです。e.CategoryはUserPreferenceCategory.Desktopとなります。

DOBON.NET .NET Tips - ユーザー設定の変更をイベントで受け取る
http://dobon.net/vb/dotnet/system/userpreferencechanged.html
■No13691に返信(管理人さんの記事)
>>タスクバーに隠れずに上手いことフォームを表示させたいのですが、どうすればよいのでしょうか?
> 確認してみましたが、LoadイベントハンドラでSetDesktopBoundsを使っても問題ありませんでした。
あれれ?本当だ・・・orz
何してたんだろう・・・

>>できたらさらに、タスクバーが移動した場合、その移動に合わせてフォームを再描画、とかもやりたいのですが・・・。
> タスクバーが移動したかどうかは、SystemEvents.UserPreferenceChangedイベントで分かるようです。e.CategoryはUserPreferenceCategory.Desktopとなります。
> DOBON.NET .NET Tips - ユーザー設定の変更をイベントで受け取る
> http://dobon.net/vb/dotnet/system/userpreferencechanged.html

あ、イベントですね、わかりました。ちょっと↑除いて作ってみます。
お手数かけて申し訳ありませんでした。
どうもありがとうございました。
解決済み!

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