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

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

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

Re[6]: MDI親フレームの子フレームから子フレーム作成について


(過去ログ 50 を表示中)

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

■27388 / inTopicNo.1)  MDI親フレームの子フレームから子フレーム作成について
  
□投稿者/ tamaboyo (1回)-(2008/11/05(Wed) 11:16:38)

分類:[C#] 

はじめまして、tamaboyoと申します。
VB6ユーザーだったのですが、C#を使うことになりました。
宜しくお願いします。

MDI親フレームから表示させた子フレームAからフレームBを呼び出して、
AとBに親子関係を指定することは可能でしょうか?
フレームAにはデータ表示部、フレームBは項目編集、と表示と編集を別フレームで行います。
そのため、フレームAを閉じるときには、Bも一緒に閉じたいため、親子関係を作りたいのです。

今、MDIからAを呼び出すときには、
frm.MdiParent = this;
で親がMDIだと指定し、
AからBを呼び出すときには、
frm.MdiParent = this.MdiParent;
frm.Parent = this;
としています。
#frm.MdiParent = this;
#だとコンパイルが通りませんでした。
これだとコンパイルは通るのですが、実行すると、「有効な MDI 親を含む Controls コレクションにフォームを追加することはできません。」とエラーが表示されます。

・フレームAとBに親子関係を作ることはムリなのでしょうか?
・ムリであれば、ほかに関係を作る方法はありますでしょうか?

VBからの乗り換えなので、C#にまだ慣れていないところがあり、何かきっかけでも頂けると幸いです。

開発環境は、XP+SP2、VS2005です。
宜しくお願いします。
引用返信 編集キー/
■27394 / inTopicNo.2)  Re[1]: MDI親フレームの子フレームから子フレーム作成について
□投稿者/ やじゅ (755回)-(2008/11/05(Wed) 12:32:31)
やじゅ さんの Web サイト
No27388 (tamaboyo さん) に返信
> MDI親フレームから表示させた子フレームAからフレームBを呼び出して、
> AとBに親子関係を指定することは可能でしょうか?
> フレームAにはデータ表示部、フレームBは項目編集、と表示と編集を別フレームで行います。
> そのため、フレームAを閉じるときには、Bも一緒に閉じたいため、親子関係を作りたいのです。
>

Parentプロパティとは別に独自の親子関係プロパティを追加するとかすればいいのは?
引用返信 編集キー/
■27402 / inTopicNo.3)  Re[2]: MDI親フレームの子フレームから子フレーム作成について
□投稿者/ tamaboyo (2回)-(2008/11/05(Wed) 14:00:27)
No27394 (やじゅ さん) に返信

boyotamaです。
アドバイスありがとうございます。

> ■No27388 (tamaboyo さん) に返信
>>MDI親フレームから表示させた子フレームAからフレームBを呼び出して、
>>AとBに親子関係を指定することは可能でしょうか?
>>フレームAにはデータ表示部、フレームBは項目編集、と表示と編集を別フレームで行います。
>>そのため、フレームAを閉じるときには、Bも一緒に閉じたいため、親子関係を作りたいのです。
> >
>
> Parentプロパティとは別に独自の親子関係プロパティを追加するとかすればいいのは?

とは、どういう意味なのでしょうか?


元々、VBのコードでは、フレームAとBに記号を付けておき、Aを閉じるときにMDIの子フレームをすべてチェックして、
同じ記号を持ったフレームを閉じるようにしていました。

同じような考え方でしょうか?
引用返信 編集キー/
■27407 / inTopicNo.4)  Re[3]: MDI親フレームの子フレームから子フレーム作成について
□投稿者/ やじゅ (757回)-(2008/11/05(Wed) 14:25:46)
やじゅ さんの Web サイト
No27402 (tamaboyo さん) に返信
> 元々、VBのコードでは、フレームAとBに記号を付けておき、Aを閉じるときにMDIの子フレームをすべてチェックして、
> 同じ記号を持ったフレームを閉じるようにしていました。
>
> 同じような考え方でしょうか?

同じ考えですね。
プロパティを使った方がオブジェクト指向的にいいかなと。
引用返信 編集キー/
■27415 / inTopicNo.5)  Re[4]: MDI親フレームの子フレームから子フレーム作成について
□投稿者/ tamaboyo (3回)-(2008/11/05(Wed) 15:31:15)
No27407 (やじゅ さん) に返信

boyotamaです。
ありがとうございます。

> ■No27402 (tamaboyo さん) に返信
>>元々、VBのコードでは、フレームAとBに記号を付けておき、Aを閉じるときにMDIの子フレームをすべてチェックして、
>>同じ記号を持ったフレームを閉じるようにしていました。
>>
>>同じような考え方でしょうか?
>
> 同じ考えですね。
> プロパティを使った方がオブジェクト指向的にいいかなと。

申し訳ないのですが、「プロパティの追加」の意味が理解できていないのですが、
C#では、フレームのプロパティに項目の追加ができるのでしょうか?
それとも、ソースにPublicな変数を宣言し、外から見れるようにすることなのでしょうか?
#VBでは、非表示のラベルコントロールに設定した文字列で判定していました。

宜しくお願いします。
引用返信 編集キー/
■27419 / inTopicNo.6)  Re[5]: MDI親フレームの子フレームから子フレーム作成について
□投稿者/ やじゅ (761回)-(2008/11/05(Wed) 16:08:19)
やじゅ さんの Web サイト
No27415 (tamaboyo さん) に返信
> 申し訳ないのですが、「プロパティの追加」の意味が理解できていないのですが、
> C#では、フレームのプロパティに項目の追加ができるのでしょうか?

プロパティ名は、適切な名称に変更してもらうとして、
各フォームに下記プロパティを追加して、MdiParentと同じような感じで使うようにする。

public Form MdiParentCustom { get; set; }

雑談:
出来れば、このプロパティを追加したフォームを基本フォームとして
それぞれのフォームは、基本フォームを継承するようにするといいかもね。
http://www.atmarkit.co.jp/fdotnet/dotnettips/324winbaseform/winbaseform.html
引用返信 編集キー/
■27429 / inTopicNo.7)  Re[6]: MDI親フレームの子フレームから子フレーム作成について
□投稿者/ tamaboyo (4回)-(2008/11/05(Wed) 17:26:43)
No27419 (やじゅ さん) に返信

tamaboyoです。
ありがとうございます。

> ■No27415 (tamaboyo さん) に返信
>>申し訳ないのですが、「プロパティの追加」の意味が理解できていないのですが、
>>C#では、フレームのプロパティに項目の追加ができるのでしょうか?
>
> プロパティ名は、適切な名称に変更してもらうとして、
> 各フォームに下記プロパティを追加して、MdiParentと同じような感じで使うようにする。
>
> public Form MdiParentCustom { get; set; }

これを実装(?)しようと頑張ってみてますが、
クラスビューのポップアップに"追加"が出ず・・・
調査中です。


> 雑談:
> 出来れば、このプロパティを追加したフォームを基本フォームとして
> それぞれのフォームは、基本フォームを継承するようにするといいかもね。
> http://www.atmarkit.co.jp/fdotnet/dotnettips/324winbaseform/winbaseform.html

なるほど。
確かに、その方がスマートになりますね。
頑張ってみます。

アドバイスありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -