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

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

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

Re[3]: 子Formから親Formのメソッドを使う方法


(過去ログ 57 を表示中)

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

■32316 / inTopicNo.1)  子Formから親Formのメソッドを使う方法
  
□投稿者/ りんご (1回)-(2009/02/04(Wed) 18:28:27)

分類:[C#] 

お世話になります。 行き詰まってしまいましたので、
どうかお力をいただけたらと思います。

Form1(親Form) に picure Boxが配置してあり、
 1.Form1のToolStripMenuItem_Clickで Form2 (子Form) をShow
 2.Form1の別の ToolStripMenuItem_Clickで、図を Form1上 picture Boxに表示
できるようになっています。

Form2のToolStripMenuItem_Clickで、上記2.と同じ動作(Form1上pictureBoxに図を表示)
をするようにしたいのですが、Form2からForm1のメソッドにアクセスする方法が分かりません。
なお、Form2はForm1を継承してはおりません。
逆の、Form1からForm2のメソッドへのアクセスは、Form2オブジェクトを介して問題なくできるのですが。。

どうか、おわかりの方お知恵をいただけませんでしょうか?
よろしくお願いいたします。

引用返信 編集キー/
■32317 / inTopicNo.2)  Re[1]: 子Formから親Formのメソッドを使う方法
□投稿者/ Jitta on the way (267回)-(2009/02/04(Wed) 18:54:59)
No32316 (りんご さん) に返信

Form2 にイベントを作って Form1 へ通知する。
お互いがお互いを知っているような作りは、あまり良く有りません。
引用返信 編集キー/
■32318 / inTopicNo.3)  Re[1]: 子Formから親Formのメソッドを使う方法
□投稿者/ みきぬ (371回)-(2009/02/04(Wed) 19:11:09)
# 書いてたら先を越されたけど

案1.Form2 が Form1 の参照を持つようにする。
# これが Jitta さんいうところの「お互いがお互いを知っているような作り」

案2.Form2 に自前のイベントを用意する
補足すると…

・Form2 に自前のイベントを用意する。
        public event EventHandler Hoge;

        protected void OnHoge(EventArgs e)
        {
            if (this.Hoge != null)
            {
                this.Hoge.Invoke(this, e);
            }
        }

・Form1 に、それを処理するメソッドを準備しておく
        void Form2_Hoge(object sender, EventArgs e)
        {
            // やりたいこと
        }

・Form1 から Form2 を開く際に、イベントと処理を関連づける。
        Form2.Hoge += new System.EventHandler(Form2_Hoge);

・Form2 の ToolStripMenuItem_Click で、そのイベントを発生させる。
        void ToolStripMenuItem_Click(object sender, EventArgs e)
        {
             this.OnHoge(e);
        }

引用返信 編集キー/
■32320 / inTopicNo.4)  Re[1]: 子Formから親Formのメソッドを使う方法
□投稿者/ biac (39回)-(2009/02/04(Wed) 21:15:15)
biac さんの Web サイト
No32316 (りんご さん) に返信
> Form1(親Form) に picure Boxが配置してあり、
>  1.Form1のToolStripMenuItem_Clickで Form2 (子Form) をShow
>  2.Form1の別の ToolStripMenuItem_Clickで、図を Form1上 picture Boxに表示
> できるようになっています。
>
> Form2のToolStripMenuItem_Clickで、上記2.と同じ動作(Form1上pictureBoxに図を表示)
> をするようにしたいのですが、Form2からForm1のメソッドにアクセスする方法が分かりません。

ん? 「図を Form_x 上の picture Box に表示する」 って仕事は共通だから、 Form ごとにやらせるんじゃなくて、 だれか一人にやらせるようにしたい、 ってことかな?

「図」ってのがなんだか分からないので、 とりあえず Form1/2 と関係無しに入手できるものだとして…

public class 図をなんかするモノ {
 public static void 表示してくれ(PictureBox pb){
  // 図を picture Box に表示する
 }
}
…を、Form1/2 とは別に作って、

で、 Form1/2 の ToolStripMenuItem_Click() で、
  図をなんかするモノ.表示してくれ(this.PictureBox1);
と呼び出して、 表示してもらえば良さそうな気がします。
引用返信 編集キー/
■32329 / inTopicNo.5)  Re[2]: 子Formから親Formのメソッドを使う方法
□投稿者/ Jitta on the way (268回)-(2009/02/05(Thu) 07:51:39)
No32320 (biac さん) に返信
> ■No32316 (りんご さん) に返信
>>Form1(親Form) に picure Boxが配置してあり、
>> 1.Form1のToolStripMenuItem_Clickで Form2 (子Form) をShow
>> 2.Form1の別の ToolStripMenuItem_Clickで、図を Form1上 picture Boxに表示
>>できるようになっています。
>>
>>Form2のToolStripMenuItem_Clickで、上記2.と同じ動作(Form1上pictureBoxに図を表示)
>>をするようにしたいのですが、Form2からForm1のメソッドにアクセスする方法が分かりません。
>
> ん? 「図を Form_x 上の picture Box に表示する」 って仕事は共通だから、 Form ごとにやらせるんじゃなくて、 だれか一人にやらせるようにしたい、 ってことかな?

Form2 のアクションで、Form1 に表示している図を変更したいのかな?と思ったのですが、そういう考え方もありますね。
引用返信 編集キー/
■32345 / inTopicNo.6)  Re[3]: 子Formから親Formのメソッドを使う方法
□投稿者/ りんご (3回)-(2009/02/05(Thu) 11:52:53)
みなさま、ほんとうにありがとうございました。
また、こちらの説明不足で質問がわかりにくくなってしまい申し訳ありませんでした。
みきぬさんの方法で無事所望の動作を得ることができました。

Jitta on the way さんのおっしゃった通り、

>Form2 のアクションで、Form1 に表示している図を変更したいのかな?

を意図しておりました。

大変参考になりました、ありがとうございました。


解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -