如何从所有表单中访问类中的变量

时间:2014-02-21 15:13:11

标签: c# winforms

我有一些表单,以及一个包含用户,信息和内容列表的类管理。我想要一个管理实例,我可以从所有表格访问。我怎么做? 提前完成。

5 个答案:

答案 0 :(得分:1)

最好的方法(我的观点)是使用MVVM模式并让ViewModel继承自基类

答案 1 :(得分:1)

只是详细说明托马斯'回答。

<强>的Singleton

单例基本上是一个类,它只允许程序保存一个实例。换句话说,无论您是在Superman班级还是Batman班级,Singleton班级,让我们称之为MyCar都是一样的。< / p>

Singleton很容易实现和掌握。看一下本教程:http://www.usmaanz.com/singleton/以获得一个想法。

<强> MVVM

MVVM模式非常强大!它允许您创建一个包含一定数量属性的对象,并允许您的案例中的许多视图或表单使用该模型。

让我们说一个表格有以下控件:

  • 用户名
  • 密码
  • 电子邮件

在这种形式中,我们希望保存传递给这些控件的数据。因此,以下课程将帮助我们掌握这些数据:

public class MyModel
{
    public string Name {get;set;}
    public string Password {get;set;}
    public string Email {get;set;}
}

然后在您的表格中,您可以:

MyModel model = new MyModel(){Name = txtName.Text, Password = txtPassword.Text,  Email = txtEmail.txt};

此对象现在将保存表单的数据。您也可以使用此类将数据保存在任何其他位置,您可以自由地创建任意数量的实例。

希望有所帮助!

答案 2 :(得分:1)

错误

  

错误3可访问性不一致:参数类型“ProjectClasses.Management”的方法不如方法'FinaleSystem.MenuForm.Start(ProjectClasses.Management)'

表示您的MenuForm正在导出方法Start(可能是public),其类型ProjectClasses.Management的参数不太容易访问。可能是internal。将Management课程声明为public可以解决您的问题。如果该类嵌套在另一个类中,则将“父”类声明为public。如果您不想上课public,请改为使用方法Start internal

public表示可以从其他项目访问项目。 internal表示该项目只能在同一个项目中访问。如果Startpublic且参数类型为internalprivate,则无法从其他项目调用该方法,因为您无法创建所请求类型的对象。您无法从中派生类,以便将其用作参数。

非嵌套类的默认访问修饰符为internal。嵌套类的默认访问修饰符为private。 有关详细信息,请参阅https://stackoverflow.com/a/3763638/880990

答案 3 :(得分:0)

一种可能的解决方案是使您的管理类属性static

干杯

答案 4 :(得分:0)

这个的简单情况是作为singleton实现的,其中一个且只有一个类的实例存在于程序的生命周期中。 Singleton有许多缺点,主要与测试难度和正确处理线程有关。解决此问题的下一步通常以service locator pattern实现,但这也被视为反模式。处理此问题的最佳方法称为dependency injection。虽然DI是“最佳方式”,但在您的方案中可能很难/过度杀戮。