遇到这个问题...
我自动创建复选框(在此之前,在程序开始时,我声明了一个 CheckBox 框;以便能够在整个程序中使用它们):
int startLocation = 142;
for (i = 0; i < ingridients.Length; i++)
{
box = new CheckBox(); //Create new checkBox
box.Tag = i;//CheckBox (Tag 0-..)
box.TabIndex = 8 + i;//Последовательность "выбора" через TAB
box.Text = ingridients[i];
box.AutoSize = true;
box.Location = new Point(2, startLocation);
startLocation += 25;
this.Controls.Add(box);
}
当窗口关闭时,我需要检查从复选框中选择的那些。
但是在这里我遇到了一个问题:我无法访问任何复选框,因为它们都具有相同的名称。
我试图这样做,但box.Tag[i] 带有红色下划线并且不起作用(原则上这是合乎逻辑的)。
for (int n = 0; n<i; n++)
{
if (box.Tag[n].Checked = true )
{
}
}
也许你可以使用标签以外的东西...
请帮我!
我将不胜感激!
PS 我最近才开始使用 StackOverflow,所以请不要对我太挑剔。

方式二:
1.创建一个列表并在那里添加初始化的复选框
2. 浏览表单上的所有控件并从中选择复选框,然后使用此列表执行您需要的操作。(在 t3f 的回答中描述)
就个人而言,我会走第一种方式。纯粹是因为如果将来表单上出现在逻辑上负责其他事情的新复选框,这可能会产生问题。
所有控件的链接都存储在 collection
Controls中,它有一个方法OfType(扩展 fromSystem.Linq),允许您按给定类型过滤它们: