从Form1到Form2的可变访问

时间:2012-02-23 04:16:44

标签: c# winforms

我是C#的新手,我需要能够访问从Form1到Form2的声明变量。变量示例:

decimal Total = 0.00M; 当用户输入项目时,总数将增加。

一旦用户完成输入项目,我需要Form2从Form1访问变量Total,一旦用户选择要付费的方法,我就可以在Form2中归零Total

我该怎么做?

4 个答案:

答案 0 :(得分:4)

如果Form1引用了Form2,您只需将其作为变量访问即可。像这样:

public class Form1
{
  public decimal Total {get; set;}
}

public class Form2
{
  public Form2()
  {
    var form1 = new Form1();
    form1.Show();

    ..later, after use has done some work and you need the variable
    var total = form1.Total;
  }
}

答案 1 :(得分:1)

在另一个类或其中一个类中创建一个静态变量。一切都可以访问静态变量。您需要使变量通用/静态。我就是这样做的。

答案 2 :(得分:1)

您可以将Form1传递给Form2(如果您需要更多变量):

public class Form2
{
    public Form1 form1 { get; set; };
}

我想你应该从Form1调用Form2,所以你可以这样做:

public class Form1
{
    private void callForm2()
    {
        Form2 form2 = new Form2();
        form2.form1 = this;
        form2.Show();
    }
}

我不建议使用静态变量,因为如果您的应用程序中打开了多个Form1,它们会给您一些问题。

答案 3 :(得分:0)

此类案例的最佳方法是创建第3类,表示以这两种形式处理的操作的上下文。您可以保留在此类中共享所需的所有状态,并将其作为参数从表单传递到表单。或者应用单例模式,允许从您拥有的所有表单访问状态。