C#如何从两种不同的形式访问一个类?

时间:2013-08-06 18:23:09

标签: c# winforms class

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

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

private Entities entities = new Entities();

我在我的一个表单中使用它,如:

int hp = entities.Get_HP(CurrentEntity);

这里hp将是例如90或57 ...但是当我在另一种形式中执行完全相同的操作时,它会抛出一个异常,说实体.Get_HP(CurrentEntity)为空。调试器(vs 2012)说的相同。

这只发生在一种形式,而不是另一种形式。

我真的希望有人可以帮助我,因为我很无能为力。 谢谢你,Dion Dokter。

2 个答案:

答案 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但它肯定会有效。