- PR -

VB.NETでのMDIを教えてください。

1
投稿者投稿内容
とっとっと
会議室デビュー日: 2005/07/09
投稿数: 4
投稿日時: 2005-07-09 21:56
VB.NETを最近始めたばかりで、MDIを利用してアプリケーションの構築を行いたいの
ですが、下記のような内容で困っています。

1:親フォーム「Main」を作成
2:子フォーム「Frm_Child1」「Frm_Child2」の2つを作成
3:アプリ起動時には「Frm_Child1」が開くように、親フォームの「Main_Lord」に

  'メイン画面(親フォーム)にメインメニュー(子フォーム)を表示
Dim NewMDIChild As New Frm_Child1
NewMDIChild.MdiParent = Me

'親フォームを最大化表示
Me.WindowState = FormWindowState.Maximized

NewMDIChild.StartPosition = FormStartPosition.CenterScreen
NewMDIChild.Show()

のコードを記述
4:「Frm_Child1」のボタンを配置、クリック時に「Frm_Child2」が開くよう設定

このような内容で実行した場合、Frm_Child1からFrm_Child2を開いた時、Frm_Child2は
親フォームMainの子フォームになりません。どのようにしたらFrm_Child2を子フォーム
ムとすることが出来るのでしょうか?

説明が伝わり難いかもしれませんが、よろしくお願いいたします。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-07-09 22:28
引用:

4:「Frm_Child1」のボタンを配置、クリック時に「Frm_Child2」が開くよう設定

このような内容で実行した場合、Frm_Child1からFrm_Child2を開いた時、Frm_Child2は
親フォームMainの子フォームになりません。どのようにしたらFrm_Child2を子フォーム
ムとすることが出来るのでしょうか?



分かりません。

肝心の「Frm_Child1からFrm_Child2を開く」時に、どんなコードを実行しているかを明らかにしてください。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
とっとっと
会議室デビュー日: 2005/07/09
投稿数: 4
投稿日時: 2005-07-09 22:44
すみません、説明が不足でした。
Frm_Child1のボタンクリック時には下記のようなコードを書きました。

Dim NewFrmChild As New Frm_Child2
NewFrmChild.Show()

申し訳ありませんが、よろしくご指導ください。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-07-09 22:50
NewFrmChildにMdiParentが設定されていなかったらそれを普通のフォームとして開くのは至極当然な動作だと思いますが。
とっとっと
会議室デビュー日: 2005/07/09
投稿数: 4
投稿日時: 2005-07-09 23:21
MdiParentの設定は以下の記述で良いのでしょうか?

Dim NewFrmChild As New Frm_Child2
Dim NewFrmParent As Main
NewMDIChild.MdiParent = NewFrmParent
NewFrmChild.Show()

ちなみに上記のコードでは、子フォームとして動作せずに普通のフォームとして
開いてしまいます。具体的なコードをお教えいただければ助かります。
初心者の愚問ばかりで申し訳ありません。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-07-10 06:48
コード:

Dim NewFrmParent As Main
NewMDIChild.MdiParent = NewFrmParent


これじゃ NewFrmParent に何も設定していないので、NewMDIChild.MdiParent にも何も設定されませんね。
Main 型の変数を設定すればいいんじゃなくて、現在の MDI コンテナを渡さなければいけません。
今回は別の MDI 子フォームから開くとのことなので、たとえば
コード:

NewMDIChild.MdiParent = MdiParent


でよいのではないかと思います。

いいサンプルが見つからなかったのですが、
@IT:連載 改訂版 C#入門 第3章 クラスとインスタンス


[ メッセージ編集済み 編集者: にしざき 編集日時 2005-07-10 07:00 ]
とっとっと
会議室デビュー日: 2005/07/09
投稿数: 4
投稿日時: 2005-07-10 07:23
にしざきさんレス有難うございます。

お教えいただいたコードで解決いたしました。私は間違った理解をしていたんですね。
非常にお恥ずかしい愚問に、丁寧なレスを頂いたことに感謝しております。
1

スキルアップ/キャリアアップ(JOB@IT)