首页 > 解决方案 > 如何在运行时创建多个列表?

问题描述

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

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

下面的代码

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

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

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

     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 时不断创建动态列表但我被困了几个小时。

视觉表现

首先我可以做到这一点 在此处输入图像描述

但是后来我想这样做,但我不能这样做,因为我需要创建另一个 List 以添加到嵌套列表中,因为groupObjects List它已经填充了数据。 在此处输入图像描述

标签: c#nested-lists

解决方案


如果我正确理解了这个问题,您只需在将当前列表添加到“嵌套列表”时创建一个新列表。IE

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

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


推荐阅读