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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.28585 の関連記事表示

<< 0 >>
■28585  別Formが開いている時
□投稿者/ 峰 -(2008/11/28(Fri) 02:38:06)

    分類:[C#] 

    Form1でボタンをクリックした時、
    Form2が開いていれば(アクティブ状態かどうかは問わない)、
    Form2の任意のメソッドを実行する
    というふうなものを実装したいのですが、
    どうすればよいのでしょうか?
親記事 /過去ログ52より / 関連記事表示
削除チェック/

■28586  Re[1]: 別Formが開いている時
□投稿者/ 倉田 有大 -(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プロパティかな。
記事No.28585 のレス /過去ログ52より / 関連記事表示
削除チェック/

■28601  Re[2]: 別Formが開いている時
□投稿者/ 峰 -(2008/11/28(Fri) 09:22:47)
    No28586 (倉田 有大 さん) に返信

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

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

    その後、宣言したメソッドとは別のメソッドでそのForm2クラス型の変数を使用する方法
    だったのですが、そんなことは不可能なのでしょうか?
記事No.28585 のレス /過去ログ52より / 関連記事表示
削除チェック/

■28607  Re[3]: 別Formが開いている時
□投稿者/ .SHO -(2008/11/28(Fri) 09:34:38)
    No28601 (峰 さん) に返信

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

    こんな感じというソースを投稿した方がわかりやすいと思います。
記事No.28585 のレス /過去ログ52より / 関連記事表示
削除チェック/

■28611  Re[3]: 別Formが開いている時
□投稿者/ たくボン -(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>
記事No.28585 のレス /過去ログ52より / 関連記事表示
削除チェック/

■28613  Re[3]: 別Formが開いている時
□投稿者/ みきぬ -(2008/11/28(Fri) 10:37:58)
    No28601 (峰 さん) に返信
    > ■No28586 (倉田 有大 さん) に返信
    >
    > 教えていただいた例では、
    > Form1のフィールドで、Form2クラス型の変数を用意する方法だと思うのですが、
    >
    > 私が聞きたかったのは、Form1の任意のメソッドで
    > Form2クラス型の変数をローカル宣言しインスタンスを作成。
    >
    その場合、Form2 のインスタンスが複数個生成されちゃう可能性があるんだけど、平気?
    インスタンス管理したいのであれば、Form1 のフィールドで持っちゃったほうがいいと思うよ。
記事No.28585 のレス /過去ログ52より / 関連記事表示
削除チェック/

■28632  Re[3]: 別Formが開いている時
□投稿者/ 倉田 有大 -(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();
    をインスタンスを作成したいメソッドにかく方法じゃだめなのかな。
記事No.28585 のレス /過去ログ52より / 関連記事表示
削除チェック/

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

    「ローカル変数」という時点で参照が消えてしまうので無理です。
    My.Forms の機能を使えばローカル変数に入れることはできますが、これならローカル変数とする意味がないです。
    VB の Static なら保持できますが、これも内部的には Private フィールドに近い存在です。
記事No.28585 のレス /過去ログ52より / 関連記事表示
削除チェック/

■28694  Re[3]: 別Formが開いている時
□投稿者/ Jitta -(2008/11/28(Fri) 23:00:20)
>
    私事ですが、最近、「お礼を言ってないなぁ」と思います。人に何かをしてもらったときに、「ありがとう」の一言が言えていない。これは、改めないといけないと思い、努力しているところです。


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

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

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

    ここからわかるのは、

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

    の3点です。「Form1 の任意のメソッドで Form2 をメソッド ローカル変数として宣言し、別のメソッドで呼び出す」とは、どこにも書かれていません。どうやって読み取ったらよいのでしょう?
記事No.28585 のレス /過去ログ52より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -