我有一个很大的问题,我无法解决自己。
我有两个同时运行的窗体和一个单独的类。要与类进行交互,我将以两种形式使用此代码:
private Entities entities = new Entities();
我在我的一个表单中使用它,如:
int hp = entities.Get_HP(CurrentEntity);
这里hp将是例如90或57 ...但是当我在另一种形式中执行完全相同的操作时,它会抛出一个异常,说实体.Get_HP(CurrentEntity)为空。调试器(vs 2012)说的相同。
这只发生在一种形式,而不是另一种形式。
我真的希望有人可以帮助我,因为我很无能为力。 谢谢你,Dion Dokter。
答案 0 :(得分:2)
每当您说“新”时,您将获得该对象的完全唯一实例。你想要的是两个不同窗口之间的相同的异常。您可以使用事件来传递信息,或者在某处传递静态方法,或者让窗口有一个带有参数的自定义构造函数来共享对象。
这些是核心概念。如果您详细说明您对程序的使用,特别是如何打开这些表单,则有人可以提供进一步的帮助。
答案 1 :(得分: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但它肯定会有效。