-3

我有一个大问题,我无法解决自己。

我有两个同时运行的 Windows 窗体和一个单独的类。为了与类交互,我以两种形式使用此代码:

private Entities entities = new Entities();

我以我的一种形式使用它,如下所示:

int hp = entities.Get_HP(CurrentEntity);

这里 hp 将是例如 90 或 57 ...但是当我以另一种形式做完全相同的事情时,它会抛出一个异常,说entities.Get_HP(CurrentEntity) 为空。调试器(与 2012 相比)也是如此。

这只会以一种形式发生,不会以另一种形式发生。

我真的希望有人可以帮助我,因为我一无所知。谢谢你,迪翁·多克特。

4

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 中设置之前没有尝试访问实体的方法/属性的代码路径,并且应该这样做。由于我不使用控制器/winforms,因此不确定此实现在好的或坏的实践方面的立场,但它肯定会起作用。

于 2013-08-06T18:31:26.863 回答