• ベストアンサー

Formロード時に生成するインスタンスを、他のイベント内でも共有したい。

下記手順を踏んで作成したオブジェクトを、タイトルの通り他のイベント内でも共有したいと考えています。 1. Formロード時に、xmlファイルから400項目程度の内容を読み込む。 2. 1.で読み込んだ各内容を、クラスのフィールドに設定します。 このようにLoadイベントで生成したクラスを、他のイベント、例えば、Form画面に設定してあるボタンのクリック時にも使いたいのです。 このようなケースで、どのような方法を採るとよいでしょうか? 【この質問に関係はないかもしれませんが、 言語は、C#を使っています。】

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

C#がわかりませんが、参考になるかもしれないアドバイスを1つだけ。 生成したクラスをフォームのprivateで宣言する。 これ以外はモジュールを作成してクラスプロパティを作成するということしか浮かんできません。 見当違いだったらごめんなさい。

yamachan_tomo
質問者

お礼

間違えました。お礼の方ではなく補足の方にかいちゃいました。 ご意見ありがとうございます。

yamachan_tomo
質問者

補足

早速のご回答ありがとうございます。 質問してすぐだったので、びっくりしました(^^ >生成したクラスをフォームのprivateで宣言する。 >これ以外はモジュールを作成してクラスプロパティを作成するという >ことしか浮かんできません。 そうですよね。 その案は、私も考えたのですが Form内で気軽に共有フィールドを作成していいのか迷いました。 何か、手をつけたらいけないようなところに 手をつけてる感じがありました。 そのため、他にいい方法 があれば、そちらを採用したいのですが・・・・ もし、見つからなければこの方法を採用したいと思います。 privateフィールドですし、いいのかな。 マルチスレッドな環境では気をつけなければならない? ってことぐらいなのでしょうか・・・。

その他の回答 (2)

回答No.3

> 開発者がFormのフィールド変数を持つということで、 > デメリットになるというようなことはないのでしょうか。 ある意味愚問かと。 フォーム オブジェクトのフィールドに別のクラスのオブジェクトを配置してフォーム内から共有して利用するのは基本的な事ですよ。 Form-A というオブジェクトの中でしか使わない Object-Hoge は Form-A のメンバとして作成する。 フォームに配置したコントロールのオブジェクト本体はフォームのフィールドに定義されている変数です。これらをフォームの外に作成するような作り方はしません。 もちろん、今回作成しようとしているオブジェクトがこのフォームの外からも読み書きできるようにしたいというならばフォームの外に作成するべきでしょうが。

yamachan_tomo
質問者

お礼

>ある意味愚問かと。 >フォーム オブジェクトのフィールドに別のクラスのオブジェクトを配 >置してフォーム内から共有して利用するのは基本的な事ですよ。 Formの場合は、特別かと思った。 約1ヶ月前までは、Javaしか使ったことがなかったので。 何か、作法みたいなものがあるのかな~って思った。 そっか。Formの扱いに関して、特別な留意点をいっていないとこ 見ると、他のクラス同様の扱いをすればいいってことすね。

回答No.2

そのクラスのオブジェクトを保持する変数をフォームのメンバ変数として宣言すれば無問題。 private で宣言された変数はフォーム内の各所からアクセスできます。

yamachan_tomo
質問者

お礼

貴重なご意見ありがとうございます。 temtecomaiさんもANO1さんと同じ回答ですね。 今回のようなケースでは、普通はFormクラスのフィールド変数 にその値を持つのが普通みたい? ですね。 開発者がFormのフィールド変数を持つということで、 デメリットになるというようなことはないのでしょうか。

関連するQ&A