c# - 如何在运行时创建多个列表?
问题描述
我将简要解释一下我在做什么。我正在做一个程序,让我将 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它已经填充了数据。
解决方案
如果我正确理解了这个问题,您只需在将当前列表添加到“嵌套列表”时创建一个新列表。IE
private void confirmarToolStripMenuItem_Click(object sender, EventArgs e)
{
listaAgrupamentos.Add(groupObjects);
groupObjects = new List<PictureBox>();
}
这样,现有列表将被冻结,并且添加到的任何新对象groupObjects
都将放置在单独的列表中。
推荐阅读
- typescript - i18next:在 TypeScript 中映射对象数组
- javascript - 我的 Discord 机器人多次响应一个命令,我想知道是否有办法只发送一次
- node.js - 套接字 io 在套接字连接时创建房间
- acumatica - Acumatica 中的可搜索用户定义字段
- command-line - 如何从任何文件夹运行 Windows 命令?
- sql - isdate 查询(ssrs 更新到 2017)
- python - 单击复选按钮时如何创建或移动 Tkinter 小部件,但小部件必须根据所单击的内容位于两个不同的位置?
- c++ - 将已安装、构建的库从外部 cmake 项目暴露给父级
- python - 我如何使用不和谐机器人从 Python 中的用户那里获取参数
- android - 我可以在 ios 上统一测试游戏在 android 上发布吗?