C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: MDI Child


(過去ログ 30 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■14687 / inTopicNo.1)  MDI Child
  
□投稿者/ CHOBI (1回)-(2008/02/25(Mon) 13:02:43)

分類:[C#] 

環境:VS2005
OS:Windows XP
言語:VC#

お世話になります。
C#初心者です。
親ウィンドウから子ウィンドウ作って表示させているのですが、
子ウィンドウが親ウィンドウのコントロール(ボタン、テキスト等)の
裏に隠れてしまいます。
TopMost=trueにしてみたのですが、変わりませんでした。
Paitイベントか何かで再描画するのでしょうか?

引用返信 編集キー/
■14694 / inTopicNo.2)  Re[1]: MDI Child
□投稿者/ 七曜 (85回)-(2008/02/25(Mon) 15:34:35)
No14687 (CHOBI さん) に返信

MDIということなので・・・

[Form.MdiParent プロパティ]
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.form.mdiparent(VS.80).aspx

[Form.IsMdiContainer プロパティ]
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.form.ismdicontainer(VS.80).aspx

ここら辺のプロパティ設定は正しく行われていますか。
引用返信 編集キー/
■14697 / inTopicNo.3)  Re[2]: MDI Child
□投稿者/ CHOBI (2回)-(2008/02/25(Mon) 15:42:08)
No14694 (七曜 さん) に返信
> ■No14687 (CHOBI さん) に返信
>
> MDIということなので・・・
>
> [Form.MdiParent プロパティ]
> http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.form.mdiparent(VS.80).aspx
>
> [Form.IsMdiContainer プロパティ]
> http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.form.ismdicontainer(VS.80).aspx
>
> ここら辺のプロパティ設定は正しく行われていますか。

はい、下記のようになってます。
Form child =new Form();
this.IsMdiContainer = true;
child.MdiParent = this;
child.Show();
引用返信 編集キー/
■14699 / inTopicNo.4)  Re[3]: MDI Child
□投稿者/ 七曜 (87回)-(2008/02/25(Mon) 16:08:26)
No14697 (CHOBI さん) に返信
> はい、下記のようになってます。
> Form child =new Form();
> this.IsMdiContainer = true;
> child.MdiParent = this;
> child.Show();

ああ、なんとなくわかりました。
MDI親フォームのデザインがMDIのお作法に従っていないのですね。

MDI子フォームは、詳細な計算は忘れましたが親から渡される子フォーム表示領域に描画されます。
その領域にコントロールを配置している場合、Z-Orderの計算上、親フォームの子コントロールよりも後ろに
子フォームが配置されるはずなので、通常のMDI親フォームでは、この「子フォーム表示領域」にはコントロールを配置しないようにデザインします。
で、ToolStripやMenuStripの様にDockがNoneでないものは、配置後に「子フォーム表示領域」を計算してくれるので
そういったコンテナ上にコントロールを配置するのが適切ではないかと思います。

あとは、描画ロジックを自前で実装するとか、「子フォーム表示領域」の計算を自前でするとか、方法はあるとは思いますが
たぶん、プロパティベースでどうこうできるレベルではないと思います。
(私が知らないだけかもしれませんが・・・。)

引用返信 編集キー/
■14701 / inTopicNo.5)  Re[4]: MDI Child
□投稿者/ まどか (457回)-(2008/02/25(Mon) 18:28:27)
七曜さんのを補足すると

1.IsMDIContainer プロパティをデザインで設定
2.デザインで子画面領域が黒くなる
3.たとえば、Panelを貼り付けて、Panel1.Dock=Rightに設定する → 見た目の黒い部分が子画面領域
4.Panelに適当にコントロールを貼り付ける
5.コードで子画面を表示してみる

黒い部分でのみ子画面が動くはずです。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -