-3

自分では解決できない大きな問題を抱えています。

同時に実行されている 2 つの Windows フォームと、別のクラスがあります。クラスとやり取りするには、次のコードを両方の形式で使用します。

private Entities entities = new Entities();

次のように、フォームの 1 つでそれを使用します。

int hp = entities.Get_HP(CurrentEntity);

ここで、hp はたとえば 90 または 57 になります...しかし、他のフォームでまったく同じことを行うと、entities.Get_HP(CurrentEntity) が null であるという例外が表示されます。デバッガー(vs 2012)は同じことを言います。

これは 1 つの形式でのみ発生し、他の形式では発生しません。

私は無知なので、誰かがこれで私を助けてくれることを本当に願っています。ありがとう、ディオン・ドクター。

4

2 に答える 2

2

「新しい」と言うたびに、オブジェクトの完全に一意のインスタンスが取得されます。必要なのは、2 つの異なるウィンドウ間で同じインスタンスです。イベントを使用して情報を渡すか、静的メソッドをどこかに渡すか、オブジェクトを共有するパラメーターを持つカスタム コンストラクターをウィンドウに持たせることができます。

これらはコアコンセプトです。プログラムの使用法、具体的にはこれらのフォームがどのように開かれるかを詳しく説明すると、誰かがさらに助けてくれます。

于 2013-08-06T18:29:00.553 に答える
0

Form1 で、エンティティ宣言を次のように変更します。

private static Entities entities = new Entities();

public static GetEntities() { return entities }

Form2 で

private Entities entities;
private bool entitiesSet = false;

エンティティを使用する場所。

if (!entitiesSet)
   entities = Form1.GetEntities();

Form2 に設定される前に、エンティティのメソッド/プロパティにアクセスしようとするコード パスがないことを確認してください。私はコントローラー/ウィンフォームを扱っていないので、この実装が良いか悪いかに関してどこに立っているかはわかりませんが、間違いなく機能します。

于 2013-08-06T18:31:26.863 に答える