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

MDIのちらつき防止

環境/言語:[C#, VB]
分類:[.NET]

MDIで、子フォームを最大化した状態で
ウィンドウメニューから子フォームを切り替えると、
一度子フォームの最大化が解除されてから、再び最大化されます。

見苦しいので、きれいに切り替える方法はありませんでしょうか。


ついでに、子フォームを初めから最大化しておくと、
最大化解除したときにウィンドウサイズがおかしくなります。
仕方ないので、Form.Lode()で最大化に切り替えるようにしています。
これは仕様なんでしょうか・・・
こ-じさん、こんにちは。

> MDIで、子フォームを最大化した状態で
> ウィンドウメニューから子フォームを切り替えると、
> 一度子フォームの最大化が解除されてから、再び最大化されます。
>
> 見苦しいので、きれいに切り替える方法はありませんでしょうか。
>
> ついでに、子フォームを初めから最大化しておくと、
> 最大化解除したときにウィンドウサイズがおかしくなります。
> 仕方ないので、Form.Lode()で最大化に切り替えるようにしています。
> これは仕様なんでしょうか・・・

基本的に下記の事は考えにくいです。
・MDIがちらつく事
・再び最大化されるという事
・ウィンドウサイズがおかしくなる事
画面遷移処理、画面制御処理に問題があると見込まれます。

きつい言い方ですが、仕様のせいにするのではなく、ご自分のソースを最初に疑ってみてください。
じゃんぬねっと です。

■No9078に返信(こ-じさんの記事)
> MDIで、子フォームを最大化した状態で
> ウィンドウメニューから子フォームを切り替えると、
> 一度子フォームの最大化が解除されてから、再び最大化されます。
> 見苦しいので、きれいに切り替える方法はありませんでしょうか。

正しくは、これから最大化しようとするフォームが一瞬アクティブになり、
それから、フォームが最大化されるからですよね。
「一度子フォームの最大化が解除されてから、再び最大化されます。」なる現象は見られませんでした。
自作で Window メニューを作った場合は、どうでしょうか?

> ついでに、子フォームを初めから最大化しておくと、
> 最大化解除したときにウィンドウサイズがおかしくなります。
> 仕方ないので、Form.Lode()で最大化に切り替えるようにしています。
> これは仕様なんでしょうか・・・

これは、Size が無視されて DefaultSize (こちらで指定できる初期サイズではない)
が適用されてしまうからのようですね。

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