【发布时间】:2020-07-23 00:04:17
【问题描述】:
所以基本上我的问题是我有 2 个表单,一个用于填充玩家名称(4 玩家),如果用户没有填写一个或所有文本框,随机名称将使用 streamreader 生成,所以这部分一切都很好,但我的问题是我将所有内容都保存到我的变量中,但是当尝试以其他形式使用相同的变量时,它不会让我为空
public class Player //my classs and my player variable
{
string namee;
public string Namee { get => name; set => name = value; }
}
表格 1 代码
private void bPlay_Click(object sender, EventArgs e)
{
Player p1 = new Player();
if (tbPlayer1.Text.Equals("")) //And that's the same code for all the players
{
rnName = rname.Next(1, 101);
rnLastName = rlastname.Next(1, 101);
p1.Namee += nameList[rnName] + lastnameList[rnLastName];
}
else
{
p1.Namee = tbPlayer1.Text;
}
from2.Show();
}
现在以我的表格 2 开头
public Gameplay()
{
InitializeComponent();
tbGameplayMessage.Text += " Some text " + p1.Namee;
}
它只在我的第二个表单的文本框中显示一些文本
感谢大家的帮助!! :D
【问题讨论】:
-
您的播放器 p1 未正确传递给 Form 2。另外,Form 2 中的 p1 是如何实例化的?我猜在表格 2 中你有上面的 Gameplay():
Player p1 = new Player(); -
最简单的解决方法是在表格 2 中创建一个 C# Property,然后在表格 1 中
form2.Show()之后创建一个,您可以调用:form2.p1 = p1; -
除了提到的
PropertyMercifies,您还可以通过自定义 Form2 构造函数将“p1.Namee”传递给 Form2。 -
我该怎么做@KyleWang?哪个更好?
-
只要把form2.p1 = p1? @Mercifies