第一个表单的代码(主菜单):
public partial class MainMenu : Form
{
public class Player
{
public string name, curWeapon, wpn1, wpn2, wpn3, wpn4, wpn5, curArmor, arm1,
arm2, arm3, arm4, arm5, activeQuest, curPlace, Gurgonauth = "Gurgonauth",
Klebbetoth, Shalthazaar, Khurx, dungeon, dunEnemy, dun1, dun2;
public int dmg, armor, maxArmor, strength, endurance, accuracy, luck, hp, maxHp,
xp, xpmax, lvl, gold, bank, monstersKilled;
}
private void Form1_Load(object sender, EventArgs e) => name.MaxLength = 15;
public void button1_Click(object sender, EventArgs e)
{
var p = new Player();
p.name = name.Text;
p.hp = 100;
p.maxHp = 100;
p.gold = 0;
p.lvl = 1;
p.strength = 0;
p.luck = 0;
p.xp = 0;
p.xpmax = 100;
p.curWeapon = "Bare Hands";
p.curPlace = p.Gurgonauth;
p.endurance = 0;
p.dmg = 5;
p.curArmor = "None";
p.monstersKilled = 0;
Overview ovr = new Overview(p);
ovr.Show(this);
this.Hide();
}
}
第二个表单的代码(概述):
public partial class Overview : Form
{
var p = new MainMenu.Player();
public Overview(MainMenu.Player p)
{
InitializeComponent();
name.Text += p.name;
hp.Text += p.hp.ToString();
xp.Text += p.xp.ToString() + "/" + p.xpmax.ToString();
level.Text += p.lvl.ToString();
curWpn.Text += p.curWeapon;
curArm.Text += p.curArmor;
gold.Text += p.gold.ToString();
} // It does what I want it to do
private void Overview_FormClosing(object sender, FormClosingEventArgs e) => Application.Exit();
public void button1_Click(object sender, EventArgs e) => p.gold += 10; // Shouldn't this work?
}
问题出在第二种形式的代码中(概述)。正如您从我的评论中看到的那样,它可以实现我想要的功能,但是p.gold + = 10不起作用。为什么不起作用?我不明白为什么它不起作用。我应该写些什么才能使其正常工作?
答案 0 :(得分:1)
主要是因为p
这里是一个空实例,如下面的代码所示
MainMenu.Player p = new MainMenu.Player();
您可能只想像这样分配它
MainMenu.Player p = null;
public Overview(MainMenu.Player p)
{
InitializeComponent();
this.p = p; // initialize here
name.Text += p.name;
hp.Text += p.hp.ToString();
xp.Text += p.xp.ToString() + "/" + p.xpmax.ToString();
level.Text += p.lvl.ToString();
curWpn.Text += p.curWeapon;
curArm.Text += p.curArmor;
gold.Text += p.gold.ToString();
}
顺便说一句,您应该考虑将Person
类重构为单独的文件,而不是在表单中进行定义