我目前有两种形式; Form1和Form2。 Form1用于我的clickergame,我有一个名为“money”的双人。 我需要从Form2访问此值。我已将双重“钱”设为公开,我已将form1称为:
Form1 mainform = new WindowsFormsApplication3.Form1();
即使我已经这样做了,当我做mainform.money时,我也没有收到价值 我可能做错了什么?
答案 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
我希望这个答案对你有帮助, 格里