- - PR -
複数MDI子フォームから1つを選択するには
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-09 17:31
Nameプロパティにそのような使い方はできる事は解りますが、 じゃんぬさんの仰るとおり、可読性は落ちると思います。 そもそも、同じ子画面の生成を許すのかどうかは解りませんが…、 もしそうであれば、子画面に独自プロパティを作って そいつに、親が一意となるような識別子を振ってやって、 かつ、For Eachでぐるぐるまわして、画面の型+識別子で判定ってなるんですかねぇ。 # 日本語編集 [ メッセージ編集済み 編集者: なおこ(・∀・) 編集日時 2005-09-09 17:32 ] | ||||||||||||
|
投稿日時: 2005-09-09 17:42
こんにちは、じゃんぬ です。
質問者のみぞ知るってところですが。 MDI ドキュメントって Word のような多数のドキュメントを扱えるものですから、 普通にあり得ますよね? (囚人さんの仰る通り)
そうですね、Name よりはその方が良いでしょう。 まあ、Tag を使うという方法もありますけど、 これも意味のある状態にしないと使いにくいですからね。 で、そこまで言うならば、別の構造で管理しておくべきだと思うんですよね。 要するに、変数に参照を取って、コレクション何かで管理するとかですね。 そうすれば、Name のような識別もできますし。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2005-09-09 17:43
今回の場合は「型」で判断し、それで解決できますね。
しかし通常は「型」で判断のほうがありえなくはないでしょうか?
何故でしょうか?それは今回の事例の事を言ってそういってるのであればいいのですが、 動的に子フォームを生成する事は普通にあると思います。
確かに Name よりはそっちのほうがいいですね。 そうなると、アクティブにするトリガーとフォームを別のオブジェクトに管理させたいですね。 | ||||||||||||
|
投稿日時: 2005-09-09 17:51
お世話になります。
確かに普通にあると思います。 自分は同一子画面の生成を許さないものをつい最近つくったばかりなので、 余計な事を書いてしまったかもしれません。
確かに。 最初に型で判定したのは、 上記の自分の理由なので、例としては適切ではなかったですね。 | ||||||||||||
|
投稿日時: 2005-09-09 18:10
[qute]
Dim frmChild As New Form1() frmChild.MdiParent = Me frmChild.Show() [/quote] ここで生成したForm1のインスタンスをどこかに保持しておけば、万事解決ですよね。 普通はそうすると思います。 #私なんかは、保持しておかないとガベージコレクタに回収されそうで、不安でならないのだが。 #到達不可能なインスタンスは破棄されちゃうよね。 #ま、実際にはフレームワーク内部をくぐって到達可能なんだろうけど。 _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||||||||||
|
投稿日時: 2005-09-09 18:25
MdiParent の実装ってこんなノリじゃないでしょうか。だから掃除されないと思います。
万事解決だと私も思うんですけど、上記の理由から、自分のメンバ2つが同じ所指してるのかぁとおもったら、ちょっと気持ち悪かったり^^; [ メッセージ編集済み 編集者: 囚人 編集日時 2005-09-09 18:27 ] | ||||||||||||
|
投稿日時: 2005-09-09 19:00
じゃんぬねっとさん、なおこ(・∀・)さん、囚人さん、甕星さん
ありがとうございます。 内容を理解するのに必死で遅くなり申し訳ありませんでした。 (まだ全部は理解出来てませんが・・・) 私の場合では「同じ子画面の生成」は考えていませんでした。 あるMDI子フォームをアクティブにしたいと思っていたのは 同じ子画面を2つ生成せずに、最初に生成したMDI子画面をアクティブにして 一番上に表示したかったからです。 「型」で判断して動作することが出来ました。 (本当に助かりました。) 同じ子画面がある場合は難しそうですね・・・ またよろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-09-09 21:12
こんにちは、じゃんぬ です。
アチャー、元質問者さまをそっちのけで盛り上がってしまったみたいです。 情報の共有が本来の目的ですので、お許しください。(*_ _)
別で管理するという構造であれば、同じであろうとそうであろうと関係ないです。 そして、それほど難しいことではありません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
