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 类。提前谢谢。

c# 调用列表从一个窗体到另一个窗体

修改您的 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();
}

"我做错了什么,我需要解决什么?"

  1. 请不要仅为包含 2 个项目的列表传递整个表单的对象
  2. 创建自己的类并在不涉及 UI 组件的情况下创建它们的实例