如何在运行时创建多个列表?
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
的任何新对象将被放置在一个单独的列表中。
我将简要说明我在做什么。我正在做一个程序,允许我将 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
的任何新对象将被放置在一个单独的列表中。