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

MDI 子フォームのタイトルバー

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

はじめまして、いつも参考にさせていただいています。

複数formをもつアプリを開発
メニューから各Formを開くという構成だが、フォームが開かれるたびにタスクバーにアイコンが増えるのが気になる。

と、いうことからMDIFormを選択しました。
(Formを不可視にすつことも考えましたが、
最小化 → 他アプリを開くとつられて表示される。
さらに、無駄にメモリを食うのも。。。
あと、技術担当がいやがることからMDIを選択です。

MDIの ControlAdded を用いてFormが読み込まれるたびにMDIFormをリサイズしています。
ちなみに各子FormはタイトルバーをBorderStyle=Noneにて消しています。
ここまではうまくいっているのですが、子Formを開く瞬間に一瞬タイトルバーが表示されてしまいちらつきが発生しています。

過去ログ等も見ましたが見つけれず、助けていただければ幸いです。
よろしくお願いします。
■No22243に返信(せあさんの記事)

これでなんとかなりませんか?

Form.ShowInTaskbar プロパティ
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.form.showintaskbar(VS.80).aspx
返信ありがとうございます。
私の説明が悪かったようですので改めて、

1.MDI親フォームを開きます。
2.親フォーム loadイベントにてForm1を子フォームとして開きます。
3.上記Form1のButtom1_ClickよりForm2を同じ親フォーム内に開きます。
4.From2よりForm1を同様に開き、2,3はループできる。

この際にForm1,Form2ともにFormBorderStyle=Noneとして、Formタイトルバー(最上位置の青い部分)を消しています。

問題点は、
このタイトルバーを消した状態で開ければいいのですが、
上記3のときに一瞬タイトルバーが出てきてすぐに消えるという現象が起きています。
この現象さえなくなればいいのですが、なかなかうまくいきません。

よろしくお願いします。

備考:
ちなみにUserControl化して、親画面にPanelを配置してそこにControls.Addをかける方法も試みていますが、いまいちうまくいかないんですよね
サンプルを書いてみました。参考になれば幸いです。
コードがVBですがご了承下さい。m(_ _)m

私の知識の範囲では、Mdi子Formのタイトルバーが非表示の状態ではForm.LayoutMdiメソッドが使えなかったので、Mdi子Formを整列させるコード(の手抜き版)を自力実装しています。
http://dobon.net/cgi-bin/up/files/041.zip

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