子フォームから別の子フォームを開きたい – プログラミング – Home

子フォームから別の子フォームを開きたい
 
通知
すべてクリア

[解決済] 子フォームから別の子フォームを開きたい


ao
 ao
(@ao)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

開発環境:Windows2000/VC++.NET2003
Windowsフォームアプリケーションを利用して、子フォーム(Form2)にあるボタンをクリ
ックしてもう一方の子フォーム(Form3)を開きたいです。
現在、子フォームはプロパティウィンドウのMDIをtrueにして可能にし、
親フォームからForm2->Show();のメソッドでそれぞれの子フォームを表示させていま
す。
私自身VCを始めてまだ日が浅いので出来れば分かりやすく教えていただきたいです。
正直困っています。ご教授のほどをよろしくお願いします。


引用未解決
トピックタグ
123
 123
(@123)
ゲスト
結合: 22年前
投稿: 9
 

何がしたいのかわかりません。

SDIで画面を切り替えたいのか。
MDIで画面を新規作成したいのか。
MDIならば、ボタンを押すたびに複数同じ画面を表示するのか、開いていればアクティブ
にするのか。
また、現在の状態で何をどう改善したいのか


返信引用
ao
 ao
(@ao)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

123さん、ありがとうございます。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=11402&forum=7
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=res&namber=7602&page=&no=0
を参考にしてWindowsアプリケーションを作成しています。

現在の状態は、親フォーム(Form1)があり、そこのメニューリストからアイテムを選択
すると、
private: System::Void menuItem1_Click(System::Object * ender,System::EventArgs
* e)
{
   Form2 *newMDIChild = new Form2();
   // Set the Parent Form of the Child window.
   newMDIChild->MdiParent = this;
   // Display the new form.
   newMDIChild->Show();

}
の要領でForm1の子フォーム(Form2)を表示させています。
同じ要領でForm1の子フォームであるForm3も表示させているのですが、(ここまでが現在
の状態)
私はForm2から同じ子フォームであるForm3を表示させたいのです。

分かっていただけたでしょうか??


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

えーと、多分VBをされていたのだと思うのですが、
VC特有の表現を早く覚えた方が良いと思います。
VBとはニュアンスが異なったりしますので、話が通じにくくなります。
フォームと言われているのはMDIの子フレームなのではないですか?
基本的にVCではフォームと言う言い方はしないです。
ウインドウもフレームウインドウとクライアント領域は分けて考えますし。
VBとはかなり違うと思います。
あと、普通MDIの場合、子フレームの親はメインフレームになるので
今の構成もなんだかおかしいような気がします。
子フレームならメインフレームに依頼してオープンさせて
メインフレームを通して連携させるとかの方が構成的にはあっているような。
子フレームから起こすなら普通はダイアログを使うような気がします。
ウインドウの構成の話なのでそういう構成が仕様なんだと言われると
なんとも反論のしようがないのですけれど。
MDIとかSDIとかダイアログベースとかそういった基本的なウインドウ構成を
勉強された方がよいように感じます。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

メインフレーム云々つーか、示されたコードは MC++ っすよね。


返信引用
123
 123
(@123)
ゲスト
結合: 22年前
投稿: 9
 

VC の NET Framework で作っているようですが
知識がないのでわかりません。
たぶん C# のラウンジの方に聞いた方がいいのでは


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> 分かっていただけたでしょうか??

わかりません。

> 私はForm2から同じ子フォームであるForm3を表示させたいのです。

とは、どういうことなのでしょうか?
Form1 のメニューをクリックすると子である Form2 が表示される。ここまでは OK。
それから? 即座に Form3 を表示したいんですか?
で、Form3 を表示するコードが Form2 の中にあればいい?

であれば、Form2 の Load イベントにでも

private: System::Void Form2_Load(System::Object * ender,System::EventArgs
* e)
{
   Form3 *newMDIChild = new Form3();
   // Set the Parent Form of the Child window.
   newMDIChild->MdiParent = this->MdiParent;
   // Display the new form.
   newMDIChild->Show();
}

こんな感じでいいんでない?


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ああ、これが噂のMC++なんですね。

επιστημηさんが別物だと言われてましたが、本とに別物だ。
MFCとも根本的に違うみたいだし。
MC++の方は勉強してないので良くわからないです。
今度から、.net系の質問は注意しないと見当違いの書き込みしそう。
MC++となるとそっち系の掲示板の方が話が早いかな。
C#の板の方が適任ならそちらの方が良いかもしれないですね。


返信引用
ao
 ao
(@ao)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

遅くなってすみません。
シャノンさんに教えていただいた方法でできました!!!

private: System::Void Form2_Load(System::Object * ender,System::EventArgs
* e)
{
   Form3 *newMDIChild = new Form3();
   // Set the Parent Form of the Child window.
   newMDIChild->MdiParent = this->MdiParent;
   // Display the new form.
   newMDIChild->Show();
}

です。
ずっと悩んでいたのに本当に感動しました。
言葉足らずな説明で本当にすみません。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました