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

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

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

Re[3]: 別Formが開いている時


(過去ログ 52 を表示中)

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

■28585 / inTopicNo.1)  別Formが開いている時
  
□投稿者/ 峰 (1回)-(2008/11/28(Fri) 02:38:06)

分類:[C#] 

Form1でボタンをクリックした時、
Form2が開いていれば(アクティブ状態かどうかは問わない)、
Form2の任意のメソッドを実行する
というふうなものを実装したいのですが、
どうすればよいのでしょうか?
引用返信 編集キー/
■28586 / inTopicNo.2)  Re[1]: 別Formが開いている時
□投稿者/ 倉田 有大 (367回)-(2008/11/28(Fri) 05:19:03)
2008/11/28(Fri) 05:26:57 編集(投稿者)

No28585 (峰 さん) に返信
> Form1でボタンをクリックした時、
> Form2が開いていれば(アクティブ状態かどうかは問わない)、
> Form2の任意のメソッドを実行する
> というふうなものを実装したいのですが、
> どうすればよいのでしょうか?


フォームのプロパティで
Form2 form2;

this.form2 = new Form2();

呼び出したいところで、
this.form2.メソッド名

メソッドはpublic定義しておいてね。

開いているかどうかはvisibledプロパティかな。
引用返信 編集キー/
■28601 / inTopicNo.3)  Re[2]: 別Formが開いている時
□投稿者/ 峰 (2回)-(2008/11/28(Fri) 09:22:47)
No28586 (倉田 有大 さん) に返信

教えていただいた例では、
Form1のフィールドで、Form2クラス型の変数を用意する方法だと思うのですが、

私が聞きたかったのは、Form1の任意のメソッドで
Form2クラス型の変数をローカル宣言しインスタンスを作成。

その後、宣言したメソッドとは別のメソッドでそのForm2クラス型の変数を使用する方法
だったのですが、そんなことは不可能なのでしょうか?

引用返信 編集キー/
■28607 / inTopicNo.4)  Re[3]: 別Formが開いている時
□投稿者/ .SHO (216回)-(2008/11/28(Fri) 09:34:38)
No28601 (峰 さん) に返信

> 私が聞きたかったのは、Form1の任意のメソッドで
> Form2クラス型の変数をローカル宣言しインスタンスを作成。
>
> その後、宣言したメソッドとは別のメソッドでそのForm2クラス型の変数を使用する方法
> だったのですが、そんなことは不可能なのでしょうか?

こんな感じというソースを投稿した方がわかりやすいと思います。

引用返信 編集キー/
■28611 / inTopicNo.5)  Re[3]: 別Formが開いている時
□投稿者/ たくボン (83回)-(2008/11/28(Fri) 10:21:47)
2008/11/28(Fri) 10:26:34 編集(投稿者)
2008/11/28(Fri) 10:25:08 編集(投稿者)

<pre><pre>■No28601 (峰 さん) に返信
> ■No28586 (倉田 有大 さん) に返信
>
> 教えていただいた例では、

> Form2クラス型の変数をローカル宣言しインスタンスを作成。

何がしたいかわかりませんが、

> Form1のフィールドで、Form2クラス型の変数を用意する方法だと思うのですが、

じゃなくて、ローカル変数で生成したForm2のインスタンスを、別のメソッドから参照したいみたいなので、

foreach (Form f in Application.OpenForms)
{
if (f is Form2)
{
Form2 frm2 = (Form2)f;
frm2.hoge();
}
}

こんなんくらいしか思いつかない。
Form1の複数のメソッドから参照されるForm2をなぜForm1のフィールドにしないかがいまいち理解できませんが、開いている画面を列挙して、そこからForm2を特定できる条件を書いてcastでいいんじゃないかな。</pre></pre>
引用返信 編集キー/
■28613 / inTopicNo.6)  Re[3]: 別Formが開いている時
□投稿者/ みきぬ (250回)-(2008/11/28(Fri) 10:37:58)
No28601 (峰 さん) に返信
> ■No28586 (倉田 有大 さん) に返信
>
> 教えていただいた例では、
> Form1のフィールドで、Form2クラス型の変数を用意する方法だと思うのですが、
>
> 私が聞きたかったのは、Form1の任意のメソッドで
> Form2クラス型の変数をローカル宣言しインスタンスを作成。
>
その場合、Form2 のインスタンスが複数個生成されちゃう可能性があるんだけど、平気?
インスタンス管理したいのであれば、Form1 のフィールドで持っちゃったほうがいいと思うよ。
引用返信 編集キー/
■28632 / inTopicNo.7)  Re[3]: 別Formが開いている時
□投稿者/ 倉田 有大 (369回)-(2008/11/28(Fri) 12:53:58)
2008/11/28(Fri) 12:59:34 編集(投稿者)
2008/11/28(Fri) 12:59:31 編集(投稿者)
2008/11/28(Fri) 12:58:42 編集(投稿者)

No28601 (峰 さん) に返信
> ■No28586 (倉田 有大 さん) に返信
>
> 教えていただいた例では、
> Form1のフィールドで、Form2クラス型の変数を用意する方法だと思うのですが、
>
> 私が聞きたかったのは、Form1の任意のメソッドで
> Form2クラス型の変数をローカル宣言しインスタンスを作成。
>
> その後、宣言したメソッドとは別のメソッドでそのForm2クラス型の変数を使用する方法
> だったのですが、そんなことは不可能なのでしょうか?

不可能というかインスタンスが参照できないと...
スコープの話題なのかな。

this.form2 = new Form2();
をインスタンスを作成したいメソッドにかく方法じゃだめなのかな。
引用返信 編集キー/
■28646 / inTopicNo.8)  Re[3]: 別Formが開いている時
□投稿者/ じゃんぬねっと (571回)-(2008/11/28(Fri) 14:38:20)
じゃんぬねっと さんの Web サイト
No28601 (峰 さん) に返信
> 私が聞きたかったのは、Form1の任意のメソッドで
> Form2クラス型の変数をローカル宣言しインスタンスを作成。
>
> その後、宣言したメソッドとは別のメソッドでそのForm2クラス型の変数を使用する方法
> だったのですが、そんなことは不可能なのでしょうか?

「ローカル変数」という時点で参照が消えてしまうので無理です。
My.Forms の機能を使えばローカル変数に入れることはできますが、これならローカル変数とする意味がないです。
VB の Static なら保持できますが、これも内部的には Private フィールドに近い存在です。
引用返信 編集キー/
■28694 / inTopicNo.9)  Re[3]: 別Formが開いている時
□投稿者/ Jitta (547回)-(2008/11/28(Fri) 23:00:20)
Jitta さんの Web サイト
私事ですが、最近、「お礼を言ってないなぁ」と思います。人に何かをしてもらったときに、「ありがとう」の一言が言えていない。これは、改めないといけないと思い、努力しているところです。


No28601 (峰 さん) に返信
> 教えていただいた例では、
> Form1のフィールドで、Form2クラス型の変数を用意する方法だと思うのですが、
>
> 私が聞きたかったのは、Form1の任意のメソッドで
> Form2クラス型の変数をローカル宣言しインスタンスを作成。
>
> その後、宣言したメソッドとは別のメソッドでそのForm2クラス型の変数を使用する方法
> だったのですが、そんなことは不可能なのでしょうか?

 ちょっとお尋ねしたいのですが、最初の投稿のどこに、そんなことが書いてあるのでしょう?

No28585
> Form1でボタンをクリックした時、
> Form2が開いていれば(アクティブ状態かどうかは問わない)、
> Form2の任意のメソッドを実行する
> というふうなものを実装したいのですが、
> どうすればよいのでしょうか?

ここからわかるのは、

・ Form1 と Form2 があること
・ Form1 からアクションを開始する
・ Form2 が開いていれば、メソッドを実行する

の3点です。「Form1 の任意のメソッドで Form2 をメソッド ローカル変数として宣言し、別のメソッドで呼び出す」とは、どこにも書かれていません。どうやって読み取ったらよいのでしょう?

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -