如何在运行时创建多个列表?

How to create multiple Lists at runtime?

我将简要说明我在做什么。我正在做一个程序,允许我将 PictureBoxes 从列表视图拖放到面板。我可以在那里自由移动它们或从面板中删除它们,但我现在要做的是,当用户在 PictureBoxes 周围创建一个选择框并单击一个按钮时,它将创建这些 PictureBoxes 的 ID。

示例 - 我选择了 3 个 PictureBox,每个 PictureBox 都有自己的名称,然后当我右键单击并单击工具条中的按钮时,它应该创建这 3 个 PictureBox 的 ID像“M0”。

下面的代码

我有一个嵌套列表,其中包含 PictureBox 作为他的类型。我想创建一个新列表以通过单击按钮添加到嵌套列表。

List<List<PictureBox>> listaAgrupamentos = new List<List<PictureBox>>();
List<PictureBox> groupObjects = new List<PictureBox>();

当我按下一个按钮时,我将我选择的图片框单独添加到 groupObjects List

     private void agruparToolStripMenuItem_Click(object sender, EventArgs e)
    {
       //hoverObject 
       //This object is to identify which PictureBox I hover

       //startLocation and EndLocation
       //This variables are to tell me the location of the selection box

        if (hoverObject.Location.X > startLocation.X && hoverObject.Location.Y > startLocation.Y &&
            hoverObject.Location.X < endLocation.X && hoverObject.Location.Y < endLocation.Y)
        {
            hoverObject.BorderStyle = BorderStyle.Fixed3D;

            groupObjects.Add(hoverObject);

        }
        

    }

然后,当我将所需的图片框添加到列表中后,我单击另一个按钮将 groupObject 列表 添加到 listaAgrupamentos 嵌套列表

        private void confirmarToolStripMenuItem_Click(object sender, EventArgs e)
    {

        listaAgrupamentos.Add(groupObjects);

    }

现在我想在每次按下具有不同 ID 的 confirmarToolStripMenuItem_Click 时不断创建动态列表,但我被困了几个小时才搞清楚。

视觉呈现

首先我可以做到这一点

但是后来我想这样做,但我做不到,因为我需要创建另一个列表来添加到嵌套列表中,因为 groupObjects List 它已经填充了数据。

如果我对问题的理解正确,您只是想在将当前列表添加到“嵌套列表”后创建一个新列表。即

private void confirmarToolStripMenuItem_Click(object sender, EventArgs e)
{
    listaAgrupamentos.Add(groupObjects);
    groupObjects = new List<PictureBox>();
}

这样现有列表将被冻结,添加到 groupObjects 的任何新对象将被放置在一个单独的列表中。