- PR -

子フォームから別の子フォームを開く

1
投稿者投稿内容
marcy
会議室デビュー日: 2004/05/07
投稿数: 3
投稿日時: 2004-05-07 15:33
どうしてもできないのでお願いします。
内容は、
親フォームから子フォームを開きデータ処理をした後に
別の子フォームを開きたいのですがどうしてもできません。
どなたかご指導願います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-05-07 16:28
 ちょっと、情報が少なすぎます。

 「親フォームから子フォームを表示したのと同じことを、子フォームで行えば、子フォームが親になって孫フォームが表示されるでしょう?」と、思ったのですが、違うのでしょうか?


1.作っているのはWebアプリですか、Win.アプリですか
2.「親フォーム」、「子フォーム」、「別の子フォーム」の
  プロジェクト上の関係はどのようになっていますか
3.データの受け渡しの方向は、どのようになっていますか
4.Win.アプリの場合、SDIですか、MDIですか
5.フォーム間の「親子関係」は、どのように処理しますか
6.使用する言語は?

ざっとこれくらい?
marcy
会議室デビュー日: 2004/05/07
投稿数: 3
投稿日時: 2004-05-07 16:59
Jittaさん、早速ありがとうございます。
本当に情報少ないですね、すみませんでした。

Winアプリ(MDI)で親フォームから子フォームを開きデーター
処理をした後、同じ親フォームから別の子フォームを
開きたいと考えてます。

言語はC#を使用してます。
上記ができるようになれば、あとはできる?と思いますので
お願いします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-05-07 19:08
諸農です。

引用:

marcyさんの書き込み (2004-05-07 16:59) より:

Winアプリ(MDI)で親フォームから子フォームを開きデーター
処理をした後、同じ親フォームから別の子フォームを
開きたいと考えてます。




1回目の子フォームを開く処理は
親がForm1として、子供がForm2という前提で。

コード:
Form2 f = new Form2();
f.MdiParent = this;
f.Show();



の様になっているんですよね?

で、投稿内容からでは判断できないんですが。。
もう一度、先と同じコードを実行すれば
(例えば「New」のようなメニューのクリックイベント)
もう一枚フォームが開くはずなんですが。。

もう少し具体的に、どのようなコードで試してみてダメ
だったのかを教えていただければ、より多くのコメント
が期待できると思います。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-05-07 21:50
引用:

marcyさんの書き込み (2004-05-07 16:59) より:

Winアプリ(MDI)で親フォームから子フォームを開きデーター
処理をした後、同じ親フォームから別の子フォームを
開きたいと考えてます。


 デリゲート、かな?メソッド呼び出しでもできるけど。子フォームから親フォームに、「私の処理はすみました。次の処理(別の子フォームを表示する)をしてください」と“通知”できればいいわけですよね。“通知”の方法は、メソッド呼び出しとか、子フォームのClosingイベント(をデリゲートする)とか考えられます。この辺は、案件に対して「どうすればスマートか」というレベルだと思います。いろいろあるのも、困りものですね。。。
marcy
会議室デビュー日: 2004/05/07
投稿数: 3
投稿日時: 2004-05-07 23:05
お世話になります。

そうですね。言われている様にスマートにまとめたいと思い
悩んでいるのが本音だと思います。

一番スマートだと思って組んだのが

Form2(子フォーム)からForm1(親フォーム)のメソッド呼び出し
Form3(子フォーム)を開く

以下 コードサンプル的に書きました
-----------------------------------------------------------
Form1 コード:
btn_Click1()
{
Form2 f2 = new Form2();
f2.MdiParent = this;
f2.Show();
}

public static showForm()
{
Form3 f3 = new Form2();
f3.MdiParent = this;
f3.Show();
}
-----------------------------------------------------------
Form2 コード:
btn_Click1()
{
From1.showForm();
}
-----------------------------------------------------------
で、コンパイルするとForm1.showform()の2行目"this"で
エラーになります。

C言語から乗換えて間もないので「なんで???」の状態が続います。
"私ならこう書きます"でかまいませんので教えてください。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-05-08 00:26
諸農です。

引用:

コード:
public static showForm()
{
   Form3 f3 = new Form2();
   f3.MdiParent = this;
   f3.Show();
}


で、コンパイルするとForm1.showform()の2行目"this"で
エラーになります。



スマートにまとめる話とは別次元の問題でしたね(^^;
staticメソッド内で自インスタンスの参照ができないので
コンパイルエラーになります。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
1

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