VS C#从一种形式获取数据到另一种形式

时间:2017-04-13 15:23:45

标签: c# winforms

我目前有两种形式; Form1和Form2。 Form1用于我的clickergame,我有一个名为“money”的双人。  我需要从Form2访问此值。我已将双重“钱”设为公开,我已将form1称为:

Form1 mainform = new WindowsFormsApplication3.Form1();

即使我已经这样做了,当我做mainform.money时,我也没有收到价值 我可能做错了什么?

2 个答案:

答案 0 :(得分:0)

将变量从一种形式暴露给世界其他地方并不是一种好习惯。您应该将变量封装/隐藏在具有只读访问权限或方法的属性中,将值作为构造函数参数传递等。 下面的示例使用注入构造函数进行只读属性访问。

  

Method1使用构造函数注入

// Form1
private double _money = 0;
_money = 100;
Form2 frm2 = new Form2(money);

//Form2
private double _money = 0;
public Form2(double money )
{
    _money = money;
}
  

方法2使用只读getter访问

// Form1
public double Money {get;private set;}

//Form2
Form1 frm1 = new Form1();
private double _money = 0;
_money = frm1.Money;

答案 1 :(得分:-1)

我建议您以两种形式编写可变货币:

// Form1
private Form2 frm2 = new Form2();
public double money = 0;

private void changeMoney()
{
    frm2.money = /* value */;
    this.money = /* value */;
}
// Use this method to change money from form1


// Form2
private Form1 frm1 = new Form1();
public double money = 0;

private void changeMoney()
{
    frm1.money = /* value */;
    this.money = /* value */;
}
// Use this method to change money from form1

另一个选择是创建一个这样的静态类:

public static class values
{
    public static double money = 0;
}

// From the form1 or form2, you can change the money like this:
values.money = /* value */; // set money
var x = values.money; // get money

我希望这个答案对你有帮助, 格里