- PR -

MDIアプリで解像度変更

1
投稿者投稿内容
mover
常連さん
会議室デビュー日: 2004/06/20
投稿数: 47
投稿日時: 2004-10-19 14:51
お世話になります。
VB.NETにてWinアプリ(MDI)を開発しています。

現在解像度の変更時に伴う問題で悩んでいます。
どなたか解決方法及び、情報をお持ちでしたらアドバイスお願いします。

現状、親フォームの中に子フォームが起動されている状態で、
かつ、子フォームは親フォームにちょうど収まってる状態と考えてください。
以下の2パターンで解像度を変更してみました。
※解像度は[1024x768]→[800x600]

1.アプリを起動させた状態で解像度を変更した場合。
2.アプリを起動させる前に解像度を変更した場合。

1の場合だと、子フォームはリサイズされるのですが、
2の場合だと、子フォームはリサイズされず全表示できず、
画面が切れてしまっています。
どうしたものかと悩んでいます。。。

またMDIアプリを作成上、解像度を考慮に入れた作りにするは、
どのようなことをすればよいのでしょうか?

よろしくお願いします。
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2004-10-19 16:42
南部です。

つまり、子フォームのサイズが固定ということですね。

//こんな感じのコードではないかもしれませんが。
Form f = new ChildForm();
f.MdiParent = this;
f.Show();
f.Dock = DockStyle.Fill;

で、いけません?
# show()してから Fillで。
mover
常連さん
会議室デビュー日: 2004/06/20
投稿数: 47
投稿日時: 2004-10-19 17:23
早速の返答ありがとうございます。

子フォームのサイズが固定。
まさにそのとおりなのですが、
うまく説明できずに認識がずれてました。
すいません、以下の文章間違ってました。

引用:

1の場合だと、子フォームはリサイズされるのですが、
2の場合だと、子フォームはリサイズされず全表示できず、
画面が切れてしまっています。



親フォームは解像度に対してリサイズされます。
※親フォームは解像度と同じサイズとします。
子フォームはリサイズされずに、同じサイズのまま起動されます。
ゆえに解像度を変更した時点で、親フォームにちょうど収まっていた
子フォームが収まりきらなくなってます。

収まりきらないのは仕方無いのですが、
親フォームをスクロールすれば子フォーム全体を見れる状態にしたいです。

うまく説明できなくてすみませんでした。
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2004-10-19 23:24
南部です。

いまいち、飲み込めていません。

引用:

親フォームは解像度に対してリサイズされます。



親ウィンドウは問題になっていないのですね?

解像度を下げられてしまうと、
「親ウィンドウのワーキングエリアが子ウィンドウのサイズより
小さくなってしまうため、子ウィンドウが一部しか表示されない。」
ですか?
でもこの場合、スクロールバーでません?

#やっぱり、理解できていないような、、、
mover
常連さん
会議室デビュー日: 2004/06/20
投稿数: 47
投稿日時: 2004-10-20 10:16
お世話になります。

引用:

解像度を下げられてしまうと、
「親ウィンドウのワーキングエリアが子ウィンドウのサイズより
小さくなってしまうため、子ウィンドウが一部しか表示されない。」
ですか?
でもこの場合、スクロールバーでません?



上記認識で問題ないです。

スクロールバーは出るのですが、
子ウィンドウの端が切れて表示されてしまい、
左下部に配置してあるボタンなどが表示できないのです。

う〜ん、.NetFrameworkの不具合なんでしょうか?
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2004-10-20 11:29
南部です。

引用:

スクロールバーは出るのですが、
子ウィンドウの端が切れて表示されてしまい、
左下部に配置してあるボタンなどが表示できないのです。



なんとなく分かってきました。
子ウィンドウの端が切れるということは、
「子ウィンドウのサイズが小さくなり、子ウィンドウのClientRectの外に
 でてしまったコントロールが表示されない。」
ですか?

左下部に配置してあるボタンのAnchorを Bottom, Left にするか、
子ウィンドウのAutoScrollをtrueにすればよいような。

#やっぱり分かってないようならごめんなさい。
mover
常連さん
会議室デビュー日: 2004/06/20
投稿数: 47
投稿日時: 2004-10-21 11:19
お世話になっています。

子ウィンドウのAutoScrollをTrueにすることで解決としました。
当初は、親ウィンドウにはスクロールがあっても、
子ウィンドウにはスクロールが無いものとして考えていました。

最後までアドバイスしていただきありがとうございました。^^
1

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