c# 调用列表从一个窗体到另一个窗体
本文关键字:窗体 一个 另一个 调用 列表 | 更新日期: 2023-09-27 18:31:44
我的第一篇文章在这里,希望能为我似乎无法弄清楚的问题获得一点帮助。对于我应该做的任务,我需要创建一个游戏,让 2 名玩家互相攻击。我希望用户能够在每一轮之后升级他们的统计数据,但以独立于游戏形式的形式升级它们(分别称它们为UpgradeForm和GameForm)。
我将大部分玩家的数据保存在类直升机中(列表直升机=新列表();)我最大的问题是试图将该列表从GameForm调用到我的UpgradeForm中。以下是到目前为止我获得的代码:
public partial class GameForm : Form
{
public List<Helicopter> Heli = new List<Helicopter>();
private void GameForm_Load(object sender, EventArgs e)
{
Heli.Add(new Helicopter(1, this));//give helicopter player # and set a form variable to the current GameForm
Heli.Add(new Helicopter(2, this));
}
private void GameForm_to_UpgradeForm()
{
newForm = true;
UpgradeForm UF = new UpgradeForm(this);
UF.Show();
FormProvider.GameForm.Hide();
//FormProvider is how i'm calling my GameForm.
//Shouldn't have an effect on what I'm trying to do.
}
}
在我的升级表单中:
public partial class UpgradeForm : Form
{
private GameForm gF;
List<Helicopter> HeliList = new List<Helicopter>();
public UpgradeForm(GameForm gForm)
{
InitializeComponent();
this.gF = gForm;
HeliList = this.gF.Heli;
}
}
但是,我收到一个错误:"错误 1 可访问性不一致:字段类型'System.Collections.Generic.List'的可访问性低于字段'Project.GameForm.Heli'
我做错了什么,我需要修复什么?如果需要,会将代码发布到 FormProvider 类。提前谢谢。
修改您的 UpgradeForm:
public partial class UpgradeForm : Form
{
private GameForm gF;
List<Helicopter> HeliList = new List<Helicopter>();
public UpgradeForm(List<Helicopter> list)
{
InitializeComponent();
HeliList.AddRange(list);
}
}
以及来自 GameFprm 类:
private void GameForm_to_UpgradeForm()
{
newForm = true;
UpgradeForm UF = new UpgradeForm(Heli);
UF.Show();
FormProvider.GameForm.Hide();
}
"我做错了什么,我需要解决什么?"
- 请不要仅为包含 2 个项目的列表传递整个表单的对象
- 创建自己的类并在不涉及 UI 组件的情况下创建它们的实例